2010-02-27 30 views
5

मुझे MATLAB में कलरबार संपादित करने में कोई समस्या है। कलरबार खींचा गया है और मैं YTickLabels पर विशिष्ट माप के लिए इकाई (डीबी) जोड़ना चाहता हूं। यह निम्न कमांड द्वारा किया जाता है:MATLAB - YTickLabel को फिर से परिभाषित करें

cy = get(ch,'YTickLabel'); 
set(ch,'YTickLabel',[]); 
set(ch,'YTickLabel',strcat(cy,{' dB'})); 

लेकिन जब मैं आंकड़ा आकार बदलने, MATLAB अंतराल को पुनर्परिभाषित करता है, और उत्पादन में दो बार की तरह दोहराया है,:

10 डीबी, 20 डीबी, 30 डीबी, 10 डीबी , 20 डीबी, 30 डीबी के बजाय 30 डीबी, 20 डीबी, 30 डीबी।

मैं MATLAB को अपने वाई अक्ष टिक्स को फिर से परिभाषित करने से कैसे रोकूं, इसलिए यह मेरी कलरबार को गड़बड़ नहीं करता है?

+0

मैं आपके द्वारा वर्णित व्यवहार को पुन: उत्पन्न नहीं कर सकता। कृपया अपना कोड विस्तृत करें, ताकि यह सभी को बंद करने के बाद समस्या को पुन: उत्पन्न कर सके; सभी को साफ़ करें – AVB

उत्तर

5

आदेश जब आंकड़ा आकार दिया जाता है बदले जाने से y- अक्ष टिक मान रखने के लिए, आप के लिए या तो स्पष्ट रूप 'YTick' property सेट है या सेट हो जाएगा 'YTickMode' property'manual' करने के लिए (यह से स्वचालित रूप से बदला जा रहा रखने के लिए) । कलर बार की सीमाओं को बदलने से रोकने के लिए आपको 'YLim' property को स्पष्ट रूप से सेट करना होगा (या 'YLimMode' property से 'manual' पर सेट करना होगा)।

labels = get(ch,'YTickLabel'); %# Get the current labels 
set(ch,'YLimMode','manual',... %# Freeze the current limits 
     'YTickMode','manual',... %# Freeze the current tick values 
     'YTickLabel',strcat(labels,{' dB'})); %# Change the labels 

तुम भी टिक गुण जब आप COLORBAR कार्य करने के लिए अपने प्रारंभिक कॉल में रंग बार बनाने परिभाषित कर सकते हैं: यहाँ एक संभव समाधान है।

ch = colorbar('YLim',[10 30],...      &# The axis limits 
       'YTick',[10 20 30],...     %# The tick locations 
       'YTickLabel',{'10 dB','20 dB','30 dB'}); %# The tick labels 

ये सीमाएं: उदाहरण के लिए, यदि आप जानते हैं आप, 10 पर 3 टिक मान होना 20 और 30 "डीबी" लेबल को जोड़ा गया के साथ चाहते हैं, तो आप निम्नलिखित तरीके से रंग बार बना सकते हैं , मूल्यों पर टिकटें, और आंकड़े आकार बदलते समय लेबल को टिकटें अपरिवर्तित रहना चाहिए।

+1

यदि मुझे कलरबार हैंडलर को ch के लिए मिलता है, तो मैं सेट के बजाय कलरबार का उपयोग नहीं कर सकता, क्योंकि इसके बाद इसे 'डिलीट', 'छुपाएं' या 'ऑफ' के बाद किया जाना चाहिए। जब मैं सेट फ़ंक्शन का उपयोग करता हूं तो यह पूरी तरह से काम करता है। तो धन्यवाद। –

+0

@ सोरेन: हम्म, शायद एसईटी के बजाय COLORBAR का उपयोग करने के संबंध में एक संस्करण समस्या है (शायद यह नए संस्करणों के लिए विशिष्ट है)। मैं केवल एसईटी का उपयोग करने के लिए उत्तर अपडेट करूंगा ताकि कोई भी एक ही समस्या में न चला। – gnovice

0

आपको मैन्युअल रूप से YTick प्रॉपर्टी सेट करना होगा, इसलिए यह आकृति आकार बदलने के साथ नहीं बदलेगा।

cytick = get(ch,'YTick');  
set(ch,'YTick',cytick); 
संबंधित मुद्दे