2008-10-16 10 views
7

जब आप मैटलैब में चीजों को साजिश करते हैं, तो हाल ही में प्लॉट की गई डेटा श्रृंखला पहले से मौजूद कुछ भी शीर्ष पर रखी जाती है। उदाहरण के लिए:किसी अन्य के नीचे एक डेटा श्रृंखला प्लॉट करें

figure; hold on 
plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1]) 
plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0]) 

यहां, लाल रेखा नीली रेखा के शीर्ष पर दिखाई जाती है (जहां वे छेड़छाड़ करते हैं)। क्या लाइन को "कितना गहरा" सेट करने का कोई तरीका है, ताकि आप के नीचे चीज़ों को साजिश कर सकें जो पहले से मौजूद है?

उत्तर

20

uistack कमांड का उपयोग करें। उदाहरण के लिए:

h1 = plot(1:10, 'b'); 
hold on; 
h2 = plot(1:10, 'r'); 

ब्लू लाइन के शीर्ष पर लाल रेखा के साथ दो रेखाएं प्लॉट करेगा। यदि आप करते हैं:

uistack(h1); 

नीली रेखा को सामने लाया जाएगा।

+0

मुझे यूस्टैक के बारे में पता नहीं था। यह अच्छा है! +1 –

+0

धन्यवाद, मुझे यह भी पता नहीं था। और इसके विपरीत, यूस्टैक (एच 2, 'नीचे') नीचे की रेखा को लाल रेखा भेज देगा, जो ठीक है उसके बाद मैं हूं। –

+0

@Will - अच्छा बिंदु। ओपी को: यूस्टैक के लिए कुछ अन्य इनपुट तर्क हैं जो स्टैकिंग ऑर्डर के अधिक परिष्कृत समायोजन की अनुमति देते हैं। आप कमांड लाइन पर "help uistack" टाइप करके इनके बारे में जान सकते हैं। –

4

आप वर्तमान अक्षों के बच्चों के वेक्टर के आदेश को सेट करके इसे भी पूरा कर सकते हैं। यदि आप निम्न कार्य करते हैं:

figure; hold on 
h1 = plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1]); 
h2 = plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0]); 
h = get(gca, 'Children'); 

आप देखेंगे कि एच एक वेक्टर है जिसमें एच 1 और एच 2 शामिल है। ग्राफिकल स्टैकिंग ऑर्डर एच में हैंडल के क्रम से दर्शाया जाता है। इस उदाहरण में, स्टैकिंग ऑर्डर को उलट करने के लिए आप कर सकते हैं:

h = flipud(h); 
set(gca, 'Children', h); 
+0

अंत में, मुझे लगता है कि यह उपयोगी रूप से करने के लिए एक फ़ंक्शन लिखना यूस्टैक के पुन: कार्यान्वयन के रूप में समाप्त होगा :) अच्छा बिंदु, यद्यपि। –

+0

यह दृष्टिकोण यूस्टैक का उपयोग करने के बजाय मेरे लिए तीव्रता के कई आदेशों के रूप में सामने आया। निष्पादन का समय 15 मिनट से एक सेकंड से भी कम समय तक चला गया। – digitalvision