मैं 4D प्लॉट की सतह को कैसे साजिश करूं?


11

मैं एक 3D बॉक्स में एक कण के लिए तरंग फ़ंक्शन को प्लॉट करने की कोशिश कर रहा हूं। इसके लिए मुझे 4 चर: x, y, z axes और प्रायिकता घनत्व फ़ंक्शन को प्लॉट करना होगा।

संभावना घनत्व समारोह है:

abs((np.sin((p*np.pi*X)/a))*(np.sin((q*np.pi*Y)/b))*(np.sin((r*np.pi*Z)/c)))**2

मैं np.arange()एक्स, वाई और जेड के लिए उपयोग कर रहा हूं ।

मैंने पढ़ा है कि ऐसा करने के लिए आपको 4D प्लॉट की सतह को प्लॉट करना होगा। यहाँ यह देखने के लिए क्या है:

यहाँ छवि विवरण दर्ज करें


3
संभावना घनत्व का प्रतिनिधित्व करने के लिए एक रंग का उपयोग करने के बारे में कैसे?
शुआओ काओ

मुझे लगता है कि इस तरह के कथानक के लिए अपारदर्शिता अच्छा काम करेगी। आपको प्रत्येक प्लॉट के अलग-अलग दृष्टिकोण प्रदान करने की आवश्यकता हो सकती है, लेकिन प्लॉट को अधिक अपारदर्शी बनाते हुए जहां कण इस डेटा की अच्छी तरह से कल्पना करने की संभावना है।
गॉड्रिक सीयर

2
चूंकि यह लगता है कि आप numpy उपयोग कर रहे हैं, तो आप इस्तेमाल कर सकते हैं मायावी वास्तविक साजिश करने के लिए। डॉक्स 3 डी में स्केलर डेटा को प्लॉट करने का एक उदाहरण है ।
जॉर्गेका

जवाबों:


13

f(x,y,z)

इस तरह के डेटा की कल्पना करने के कई तरीके हैं, और कई उपकरण जो आपकी मदद करेंगे। मैं आपको प्लॉट की कुछ शैलियों को दिखाऊंगा जिन्हें आप बना सकते हैं।

  1. f(x,y,z)=(const.)

    गणितज्ञ में,

    ContourPlot3D[
     Abs[Sin[\[Pi] x] Sin[\[Pi] y] Sin[\[Pi] z]]^2 == 1/2,
     {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]
    

    निरंतरता 0.2, 0.5 और 0.8 की सतहों को दिखाएं:

    ContourPlot3D[
     Abs[Sin[\[Pi] x] Sin[\[Pi] y] Sin[\[Pi] z]]^2,
     {x, -1, 1}, {y, -1, 1}, {z, -1, 1}, Contours -> {0.2, 0.5, 0.8}, 
     ContourStyle -> (Directive[#, Opacity[0.25]] & /@ {Yellow, Orange, Red}), 
     Lighting -> "Neutral", Mesh -> None]
    

  2. आप कुछ प्रकार के वॉल्यूम विज़ुअलाइज़ेशन कर सकते हैं , संभवतः कटआउट और स्लाइसिंग के साथ। आप 3D में प्रत्येक बिंदु पर एक रंग और एक अस्पष्टता निर्दिष्ट करने में सक्षम होंगे। अधिक उन्नत उपकरण आपको स्थानांतरण फ़ंक्शन का चयन करने देंगे।

    imgdata = 
      Table[Abs[Sin[\[Pi] x] Sin[\[Pi] y] Sin[\[Pi] z]]^2, 
        {x, -1., 1, .01}, {y, -1., 1, .01}, {z, -1., 1, .01}];
    
    img = Image3D[imgdata, ClipRange -> {{150, 200}, {0, 100}, {0, 200}}]
    

    स्लाइसिंग अक्सर मदद करता है, खासकर यदि आप अंतःक्रियात्मक रूप से नियंत्रित कर सकते हैं जो प्रदर्शित करने के लिए टुकड़ा है।

    Image3DSlices[img, Range[1, 200, 10]]
    

ये उदाहरण विचारों के लिए थे कि आप किस प्रकार के दृश्य बनाने की कोशिश कर सकते हैं। कई अलग-अलग स्वतंत्र और वाणिज्यिक उपकरण हैं जिनका उपयोग आप भूखंड बनाने के लिए कर सकते हैं।


9

स्केलर फ़ील्ड-आधारित डेटा (तापमान, वेग परिमाण, दबाव, घनत्व, आदि) के लिए पारंपरिक दृष्टिकोण दो या तीन अंतरिक्ष आयामों पर प्लॉट किए गए रंग का उपयोग करता है। यह ध्यान रखना महत्वपूर्ण है कि रंग योजना का चयन आपके डेटा के इंप्रेशन को विकृत कर सकता है। इस कारण से, इंद्रधनुष रंग योजना का उपयोग न करें। (क्यों, यहाँ , यहाँ , यहाँ और यहाँ देखें के लिए ।) दुर्भाग्य से, इंद्रधनुष MATLAB और matplotlib में डिफ़ॉल्ट रंग योजना है।

यदि आप तीव्रता में परिवर्तन को उजागर करने की कोशिश कर रहे हैं, तो संतृप्ति में भिन्न होने वाली एक योजना का उपयोग करके अच्छा काम करता है, जैसे कि एक सफेद (शून्य घनत्व) से लेकर काला (अधिकतम घनत्व) तक होता है। पारदर्शिता भी अच्छा काम कर सकती है। रंग का उपयोग करते समय 3-डी भूखंडों के साथ एक मुश्किल समस्या यह है कि आपको रुझानों और सुविधाओं की एक पूरी तस्वीर प्राप्त करने के लिए कई दृष्टिकोणों से डेटा को देखना होगा; आपको स्लाइस प्लॉट करने की भी आवश्यकता हो सकती है।


हां, रंग साजिश नहीं करेगा, आप सही हैं। किसी भी विचार मैं इसके लिए किस प्रकार के फ़ंक्शन का उपयोग करूंगा?
शलजम

2
क्या आप पायथन में एक समारोह का मतलब है? वहाँ कुछ पुस्तकालय हैं जो प्लॉटिंग के लिए अच्छी तरह से काम करते हैं। Matplotlib का उपयोग आमतौर पर 3D भूखंडों के बजाय 2D भूखंडों के लिए किया जाता है; ggplot और Bokeh में समान उपयोग के मामले हैं। मायावी 2, जैसा कि जोर्गेका ने सुझाव दिया, 3 डी प्लॉटिंग के लिए अच्छा है। मैं 3D डेटा के विज़ुअलाइज़ेशन के लिए सॉफ़्टवेयर पैकेज पसंद करता हूं, जैसे कि पैरावे या विज़िट। आप yt (जो कि पायथन-आधारित है) को भी देख सकते हैं, और 3D डेटा प्लॉट करने का अच्छा काम करते हैं। किसी भी सार्थक विज़ुअलाइज़ेशन लाइब्रेरी को आपको रंग तराजू, अस्पष्टता, संतृप्ति, आदि के लिए कई विकल्प देने चाहिए
ज्योफ ऑक्सीबेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.