以下命令会产生一些非常奇怪的结果 -
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轴上绘制另外两个系列。上面的命令适用于左侧系列,但会为正确的结果产生奇怪的结果。第二条绿线看起来不应该。
答案 0 :(得分: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)
答案 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提供。