2012-02-23 20 views
5

में प्लॉट 3 डी अंक मैं मूल्य के आधार पर विभिन्न रंगों में Matlab में 3 डी अंक प्लॉट करना चाहता हूं। मुझे निम्नलिखित कोड मिल गया है, लेकिन यह काम नहीं करता है क्योंकि plot3d को वेक्टर की आवश्यकता है।मैटलैब

x = vdhf_data.data(:,1); 
y = vdhf_data.data(:,2); 
z = vdhf_data.data(:,3); 
data = vdhf_data.data(:,4); 

grid on 
hold all 

for k=1:length(x) 
    if data(k) < 6 
     plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'r') 
    else 
     plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g') 
    end 
end 

मैटलैब में ऐसा कैसे करें?

उत्तर

9

मैं उपयोग

scatter3(x,y,z,ones(size(x)),data,'filled') 

यह एक ही आकार में सभी बिंदुओं साजिश और डेटा के मूल्य के अनुसार उन्हें रंग, वर्तमान रंग मैप का उपयोग कर करेगा। आप प्रत्येक बिंदु के आकार को स्केल करने के लिए डेटा का भी उपयोग कर सकते हैं।

scatter3(x,y,z,data.^-2,data,'filled') 
+0

मैं बजाय मानना ​​है कि 'लोगों (आकार (x))' scatter3 में आकार वेक्टर डिफ़ॉल्ट आकार के लिए एक ही आकार या एक खाली ('[]') के लिए अदिश मूल्य हो सकता है। – yuk

+1

हां एक स्केलर हो सकता है। मैं केवल दो मार्ककॉलर्स रखना चाहता हूं। क्या इसे लूप के बजाय एक पंक्ति में जोड़ने की संभावना है? – Razer

+0

आपको बस अपने कोलोमैप को समायोजित करने की आवश्यकता होगी। तो दो रंगों (लाल और नीले) के लिए आप इस 'colormap ([वाले (50,1) * [1 0 0]; कुछ (50,1) * [0 0 1]]) जैसे कुछ करेंगे डेटा रेंज के बीच में रंग विभाजन। यदि आप इसे एक विशिष्ट संख्या में रखना चाहते हैं तो आपको तदनुसार (एन-ए, 1) वाले (एन + ए, 1) को स्केल करना होगा – zamazalotta