【问题标题】:How to plot multiple plotyy on top of each other in Matlab如何在Matlab中绘制多个plotyy
【发布时间】:2016-05-18 12:32:42
【问题描述】:

我想在彼此之上绘制多个plotyys。在this question 中提到,对于plotyy,不能只使用hold on。正确的命令被报告为hold(...,'on')

考虑以下代码:

figure(2)
subplot(1,2,1)

myT=0:1:10;
myY1=myT*2;
myY2=1./sin(myT);
[dummy,h1,h2]=plotyy(myT,myY1,myT,[myY2' 2*ones(length(myT),1)]);
    hold(dummy(1),'on')
    hold(dummy(2),'on')
    set(dummy(1),'ylim',[0 20]);
    set(dummy(2),'ylim',[0 5]);
    set(dummy(1),'Ycolor','k')
    set(dummy(2),'Ycolor','k')
    set(h1,'color','b');
    set(h2,'color','r');

执行一次,你会得到

现在替换以下两行:

myY1=myT*3;
myY2=1./cos(myT);

你得到

似乎只保留了蓝色曲线和水平红色曲线。另一条红色曲线不是。为什么会这样?我该怎么做才能保持所有曲线?

编辑

将产生第二个数字的 MWE:

figure(2)
subplot(1,2,1)

myT=0:1:10;
myY1=myT*2;
myY2=1./sin(myT);
[dummy,h1,h2]=plotyy(myT,myY1,myT,[myY2' 2*ones(length(myT),1)]);
    hold(dummy(1),'on')
    hold(dummy(2),'on')
    set(dummy(1),'ylim',[0 20]);
    set(dummy(2),'ylim',[0 5]);
    set(dummy(1),'Ycolor','k')
    set(dummy(2),'Ycolor','k')
    set(h1,'color','b');
    set(h2,'color','r');

%%

figure(2)
subplot(1,2,1)

myY1=myT*3;
myY2=1./cos(myT);
[dummy,h1,h2]=plotyy(myT,myY1,myT,[myY2' 2*ones(length(myT),1)]);
    hold(dummy(1),'on')
    hold(dummy(2),'on')
    set(dummy(1),'ylim',[0 20]);
    set(dummy(2),'ylim',[0 5]);
    set(dummy(1),'Ycolor','k')
    set(dummy(2),'Ycolor','k')
    set(h1,'color','b');
    set(h2,'color','r');

我认为有一些干扰,因为holdset 重复了。

【问题讨论】:

  • 我无法在 R2016a 中重现该问题。将this code 结果与this figure 一起使用。
  • @excaza 我用的是 Matlab 2015b。如果我执行你的代码,我会得到与你的图完全相同的结果。对不起,我的问题不是很清楚,我将编辑代码。

标签: matlab plot


【解决方案1】:

当您调用 subplot 时,第一次调用 plotyy 中的第二个坐标区对象将被删除。虽然这看起来很奇怪,但它是documented behavior

如果新的子图坐标区与现有坐标区重叠,则 MATLAB 删除 现有的轴。要在现有子图之上覆盖新轴, 使用轴命令。例如,subplot('Position',[.35 .35 .3 .3]) 删除任何底层子图,但 axes('Position',[.35 .35 .3 .3]) 在图形中间放置一个新轴而不删除任何 底层坐标轴。

我建议创建多个axes 对象并手动定位/堆叠它们,而不是使用plotyy。这方面的一个例子可以在here找到。

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多