2013-10-24 11 views
8

मैं एक तरह से एक एक्स-y समय श्रृंखला ओवरले करने के लिए देख रहा हूँ में दो अक्षों डालने, y अक्षों पर अलग स्केलिंग के साथ 'contourf' द्वारा उत्पन्न प्रदर्शन के शीर्ष पर 'साजिश' के साथ बनाया कहना,,।एक मैटलैब साजिश

ऐसा लगता है कि दो एक्सई प्लॉट्स के मामले में ऐसा करने का सामान्य तरीका अंतर्निहित फ़ंक्शन 'प्लॉट्य' का उपयोग करना है, जिसे 'प्लॉट' (जैसे 'लॉगॉग' 'के अलावा अन्य कार्यों द्वारा भी संचालित किया जा सकता है।) जब तक इनपुट तर्क एक ही (एक्स, वाई रहने)। हालांकि, मेरे मामले contourf में के बाद से तीन इनपुट तर्क की आवश्यकता है, 'plotyy' लागू नहीं हो रहा है। यहां कुछ नमूना कोड का वर्णन मैं करना चाहता हूँ क्या होगा:

x1 = 1:1:50; 
y1 = 1:1:10; 
temp_data = rand(10,50); 
y2 = rand(50,1)*20; 
figure; hold on; 
contourf(x1,y1,temp_data); 
colormap('gray'); 
plot(x1,y2,'r-'); 

आदर्श रूप में, मैं अपने आप ही y अक्षों सही पर प्रदर्शित करने के लिए timeseries (x1, y2) चाहते हैं, और एक ही करने के लिए बढ़ाया जा contourf साजिश के रूप में खड़ी हद तक।

अपने समय के लिए धन्यवाद।

+0

आप इस सवाल में कोई उत्तर खोजने हो सकता है:: http://stackoverflow.com/questions/11531762/matlab-multiple-x-axis

यहां उदाहरण के उत्पादन है (मैं स्पष्टता के लिए फ़ॉन्ट आकार में वृद्धि हुई है) -एक-नीचे-एक और – Dan

+0

+1 प्रतिलिपि प्रस्तुत करने योग्य कोड –

+0

[इस पोस्ट] (पोस्ट करने के लिए http://stackoverflow.com/questions/1719048/plotting-4-curves-in-a-single-plot-with-3-y -axes) हो सकता है कि तुम क्या जरूरत है। – chappjc

उत्तर

6

मैं वहाँ एक "क्लीन" तरीका यह है नहीं लगता है, लेकिन आप इसे नकली एक दूसरे पर दो अक्षों ओवरले करके कर सकते हैं।

x1 = 1:1:50; 
y1 = 1:1:10; 
temp_data = rand(10,50); 
y2 = rand(50,1)*20; 
figure; 
contourf(x1, y1, temp_data); 
colormap('gray'); 
h_ax = gca; 
h_ax_line = axes('position', get(h_ax, 'position')); % Create a new axes in the same position as the first one, overlaid on top 
plot(x1,y2,'r-'); 
set(h_ax_line, 'YAxisLocation', 'right', 'xlim', get(h_ax, 'xlim'), 'color', 'none'); % Put the new axes' y labels on the right, set the x limits the same as the original axes', and make the background transparent 
ylabel(h_ax, 'Contour y-values'); 
ylabel(h_ax_line, 'Line y-values'); 

वास्तव में, यह "साजिश ओवरले" लगभग निश्चित रूप से क्या plotyy समारोह आंतरिक रूप से करता है। overlaid axes

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