4

以下命令会产生一些非常奇怪的结果 -

 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 轴上绘制另外两个系列。上面的命令对左序列工作正常,但对右序列产生奇怪的结果。第二条绿线看起来不应该。

4

2 回答 2

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)
于 2013-10-17T21:04:19.373 回答
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 给出的。

于 2013-10-17T20:59:46.933 回答