2013-10-17 154 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提供的。