2013-10-17 158 views
4

多個系列以下命令將產生一些非常奇怪的結果 -繪製在MATLAB

plotyy(1:3,2:4,3:5,4:6) 
hold on 
plotyy(1:3,2.1:4.1,3:5,4.1:6.1) 

我基本上要繪製左側y軸兩個不同的系列和右側y軸兩個系列。上述命令對左邊的系列工作正常,但對於正確的結果會產生奇怪的結果。第二條綠線不像它應該。

+1

查看http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/112018 – marsei

回答

7

您遇到的問題與plotyy創建它們的方式有關。 plotyy創建它繪製的兩個不同的軸,然後將它們安裝到一個圖中。當你發出hold on命令時,你只能凍結其中一個軸。要解決這個問題,你需要單獨保存每一個,然後使用plot命令將它們繪製回去。

[ax,hl,hr] = plotyy(1:3,2:4,3:5,4:6); 
hold(ax(1), 'on') 
hold(ax(2), 'on') 
plot(ax(1), 1:3,2.1:4.1) 
plot(ax(2), 3:5,4.1:6.1) 
4

確實很奇怪的行爲。爲了好玩,在繪圖窗口中選擇「手形」工具,然後拖動圖形,您會看到兩條綠色曲線中只有一條移動,而右側則有兩組標籤互相重疊。我認爲這是matlab中的一個錯誤(遠離Matlab繪圖中唯一的醜陋行爲)。這似乎是你想要達到什麼樣的解決方法:

[AX, H1, H2] = plotyy(1:3, [2:4;2.1:4.1], 3:5,[4:6;4.1:6.1]); 
>> set(H1, 'color','b') 
>> set(H2, 'color','g') 

注意,這僅僅在進行左側的兩個地塊具有相同的一組x值,以及類似的合適地塊,像你的情況。 A = [4000; 0; 1]。但這是一種解決方法,真正的解決方案是由slbass提供的。