2015-03-11 8 views
7

त्वरित संस्करणMatlab में bar3 का उपयोग करते समय x और y मानों को कैसे सेट करें?

मैं कैसे Matlab में एक 3 डी बार साजिश के लिए x- और y- मान नियंत्रित कर सकते हैं?

विवरण

कहते हैं कि हम एक 10 x 20 डेटा मैट्रिक्स है और हम इसे bar3 का उपयोग कर साजिश है, और हम x- और y- मान सेट करना चाहते हैं। उदाहरण के लिए:

foodat = rand(10,20); 
xVals = [5:14]; 
yVals = [-3:16]; 
bar3(xVals, foodat); 
xlabel('x'); ylabel('y'); 

क्या इसे YVals को खिलाने का कोई तरीका है? अन्यथा वाई अक्ष हमेशा [1: एन] के लिए डिफ़ॉल्ट।

नोट मैं नहीं है सिर्फ XTickLabel और YTickLabel का उपयोग कर लेबल बदलना चाहते हैं। मुझे अक्षों पर वास्तविक मान को बदलने की आवश्यकता है, क्योंकि मैं एक ही आंकड़े में एकाधिक चीजों की साजिश कर रहा हूं। यह बदलने के लिए पर्याप्त नहीं है कि कैसे (गलत) अक्ष टिक्स लेबल किए जाते हैं। तो यह इस तरह की समस्या से अलग है:

How can I adjust 3-D bar grouping and y-axis labeling in MATLAB?

अन्य चीजें मैं

की कोशिश की है जब मैं के साथ xvals बदलने का प्रयास करें:

set(gca,'XTick', xVals) 
set(gca,'YTick', yVals) 

मूल्यों में लिया जाता है, लेकिन वास्तव में गलत अक्षों पर दिखाई देते हैं, इसलिए ऐसा लगता है कि एक्स और वाई अक्ष को बार 3 का उपयोग करके स्विच किया जाता है। इसके अलावा, यह बहुत देर हो चुकी है क्योंकि बार ग्राफ पहले से ही गलत x- और y-values ​​के साथ प्लॉट किया गया था, इसलिए हम खाली मूल्यों पर टिक दे देंगे।

नोट जोड़ा

मैटलैब तकनीकी सहायता, बस मुझे सूचित करने के लिए मुझे ईमेल कर दी उपयोगकर्ता समारोह scatterbar3 योगदान है, जो करता है जो मैं चाहता स्वीकार किए जाते हैं जवाब से एक अलग तरीके से, के बारे में:

http://www.mathworks.com/matlabcentral/fileexchange/1420-scatterbar3

+0

मेरा अनुमान है कि यदि आप कई चीजों को एक साथ प्लॉट करने जा रहे हैं तो कुछ खाली '1: 4' मानों के लिए ठीक है। असल में, आप अक्ष को कॉल कर सकते हैं ([xmin xmax ymin ymax zmin zmax]) प्लॉट प्लॉट किए गए कोहने के लिए। –

+0

हां, मेरी इच्छा है कि मुख्य समस्या थी! – neuronet

+0

हम? क्या आप अपनी छवियों के कुछ चित्र पोस्ट कर सकते हैं/आप उन्हें क्या चाहते हैं? मैंने आपकी समस्या को गलत समझा होगा। –

उत्तर

3

मुझे ऐसा करने का एक तरीका मिला। मैं आपको कोड का एक टुकड़ा देता हूं, फिर आपको "साफ-सुथरा" करना होगा, मुख्य रूप से धुरी सीमाएं और एक्सटिक्स, bar3 के रूप में एक्सटिक्स को अंदर स्थापित करता है, इसलिए यदि आप दूसरों को चाहते हैं तो आपको उन्हें मैन्युअल रूप से सेट करने की आवश्यकता होगी ।

तो यह चाल बार 3 हैंडल से एक्सडाटा प्राप्त करने के लिए है। यहां बात यह है कि ऐसा लगता है कि डेटा की प्रत्येक पंक्ति के लिए एक हैंडल है, इसलिए आपको उनमें से प्रत्येक के लिए पुनरावृत्ति की आवश्यकता है। यहाँ वर्तमान उत्पादन के साथ कोड है:

foodat = rand(20,10); 
xVals = [5:14]; 
yVals = [-3:16]; 


% The values of Y are OK if called like this. 
subplot(121) 
bar3(yVals, foodat); 

subplot(122) 
h=bar3(yVals, foodat); 
Xdat=get(h,'XData'); 
axis tight 
% Widdth of barplots is 0.8 
for ii=1:length(Xdat) 
    Xdat{ii}=Xdat{ii}+(min(xVals(:))-1)*ones(size(Xdat{ii})); 
    set(h(ii),'XData',Xdat{ii}); 
end 



axis([(min(xVals(:))-0.5) (max(xVals(:))+0.5) min(yVals(:))-0.5, max(yVals(:))+0.5]) 

enter image description here

नोट: Y अलग दिखता है, लेकिन नहीं है।

जैसा कि आप अब देख सकते हैं कि एक्स मान वे हैं जिन्हें आप चाहते थे। यदि आप उनके बीच अंतराल के लिए 1 से अधिक आकार चाहते हैं तो आपको कोड बदलने की आवश्यकता होगी, लेकिन आप अनुमान लगा सकते हैं कि शायद कितना!

+1

यह काम करता है! उत्कृष्ट चाल एक्स टिक को ठीक करने के लिए नोट (यह केवल 5-10 दिखाता है), बस 'सेट (gca,' XTick ', xVals) ' – neuronet

+0

@neuronet को ठीक से जोड़ें। मैं बस आपको सबकुछ नहीं देना चाहता था: पी –

संबंधित मुद्दे