2 डी भूखंडों को समेटना-MATLAB




plot matlab-figure (2)

मुझे दो विकल्प यहां दिखाई देते हैं: 1. अंतर को प्राप्त करने के लिए एक ही साजिश और पैड के साथ एनएएन के साथ सम्मिलित करें। वास्तव में कई भूखंड हैं और चालाक तरीके से axes का उपयोग करें।

विकल्प 1 के लिए यहां एक उदाहरण दिया गया है, पहले हम कुछ नकली डेटा बनाएंगे:

a1=rand(1,20);
b1=3+rand(1,20);
c1=6+rand(1,20);

a2=rand(1,20);
b2=3+rand(1,20);
c2=6+rand(1,20);

a3=rand(1,20);
b3=3+rand(1,20);
c3=6+rand(1,20);

यह केवल NaNs के साथ पैडिंग के लिए है ...

f[email protected](x) [ NaN(1,round(numel(x)/5)) x ];

श्रृंखलाबद्ध:

y1=[f(a1) f(a2) f(a3)];
y2=[f(b1) f(b2) f(b3)];
y3=[f(c1) f(c2) f(c3)];

साजिश रचने

x=1:numel(y1);
plot(x,y1,x,y2,x,y3);
set(gca,'XTickLabel',[]); 

मेरे पास MATLAB में कई 2 डी प्लॉट हैं I प्रत्येक भूखंड में कुछ लाइनें हैं (प्रत्येक पंक्ति एक निश्चित लंबाई के मूल्यों के एक पंक्ति-वेक्टर है)। हमेशा एक बेस लाइन (काला एक) है और शेष रंगीन लाइनें मौजूद हो सकती हैं या हो सकती हैं। ।

मुझे ऐसे सभी भूखंडों को एक साजिश में जोड़ना होगा जो नीचे दिखाया गया है: । कृपया ये केवल प्रतिनिधित्व के उद्देश्य के लिए नहीं हैं बल्कि मेरी समस्या को अच्छी तरह समझें। मैं यह कैसे समझने में सक्षम नहीं हूँ। किसी को भी एक विचार मिला? एक उदाहरण हो सकता है? साथ ही, क्रमिक रूप से कंसेटेनटेड प्लॉट्स के बीच एक ऊर्ध्वाधर अंतर होना चाहिए जैसा कि पिछले आंकड़े में दिखाया गया है। कुछ अंक ध्यान दें:

  • y- अक्ष सभी भूखंडों के लिए निश्चित लंबाई का है
  • यदि प्रत्येक व्यक्ति के प्लॉट का एक्स-अक्ष 1: मी है फिर अंतिम संमिश्र साजिश का एक्स-अक्ष 1: (n * m) है, जहां एन को एक साथ जोड़ने के लिए व्यक्तिगत भूखंडों की संख्या है।

इसके अलावा, चूंकि प्रत्येक रंग की रेखा एक विशेष प्रकार के डेटा से मेल खाती है, इसकी किंवदंती कैसे बनती है? धन्यवाद!


यह आपके प्रश्न के legend बारे में है:

कई, अलग से प्लॉट किए गए आइटम (अधिक सटीक शब्द "कुल्हाड़ियों के ऑब्जेक्ट के बच्चों") के लिए एक एकल किंवदंति प्रविष्टि के लिए, आपको हर समूह का इस्तेमाल करना चाहिए इस तरह, प्लॉट किए गए ऑब्जेक्ट्स (जैसे लाइनें) को एक साथ समूहीकृत किया जाता है (तकनीकी तौर पर वे सीधे axes बच्चों के होने के बजाय hggroup बच्चों बन जाते हैं) इस प्रकार आपको एक साथ पूरे समूह में कुछ सेटिंग लागू करने की अनुमति मिलती है

यह कैसे काम करता है इसका एक सरल उदाहरण है:

%// Without hggroup
figure(1337); hold all;
x = linspace(-pi/2,pi/2,200);
for ind=1:3
    plot(x,sin(ind*x+ind),'DisplayName',...
         ['sin(' num2str(ind) 'x+' num2str(ind) ')']);
end
legend('-DynamicLegend','Location','NorthWest');

का परिणाम:

जहाँ तक:

%// With hggroup
figure(1338); hold all;
x = linspace(-pi/2,pi/2,200);
prePlot=length(get(gca,'Children'));
for ind=1:3
    plot(x,sin(ind*x+ind),'DisplayName',...
         ['sin(' num2str(ind) 'x+' num2str(ind) ')']);
end
postPlot=length(get(gca,'Children'));
meshGrp = LegendGroupLatest(gca,postPlot-prePlot);
set(meshGrp,'DisplayName','Some sines');
legend('-DynamicLegend','Location','NorthWest');

जहां LegendGroupLatest है:

function grpName=LegendGroupLatest(ax_handle,howMany)    
    grpName=hggroup; 
    tmp=get(ax_handle,'Children'); set(tmp(2:howMany+1),'Parent',grpName);
    set(get(get(grpName,'Annotation'),...
                'LegendInformation'),'IconDisplayStyle','on');

का परिणाम:

इस उदाहरण में, लूप के अंदर प्लॉट किए जाने वाली सभी पंक्तियों को पहले खींची गई वस्तुओं को प्रभावित किए बिना एक एकल hggroup जोड़ा गया है, और आप स्पष्ट रूप से समूहों को भूखंडों को असाइन करने के लिए अलग तर्क जोड़ सकते हैं।

ध्यान दें कि एक गतिशील किंवदंती आमतौर पर चार्ट में मौजूद किसी भी line जोड़ती है (यदि आप एक hggroup में एक ज़ूम बॉक्स खींचना चाहते हैं जिसमें गतिशील किंवदंती है - ज़ूम बॉक्स सीमाएं अस्थायी रूप से किंवदंती में शामिल हो जाती हैं!), लेकिन hggroup रोकता है





matlab-figure