首页 文章

通过plotyy在MATLAB中绘制2个垂直轴时设置轴限制

提问于
浏览
2

我有以下数据集来绘制:

data1 = [ 3 6 99 4 5];
data2 = [ 0.2 1.5 1.75 1.0 1.2];

我的情况特别的是我需要数据点 data1(3) ,它等于 99 ,没有显示在图表上 . 我只是用标记绘制数据点,没有线 . )

虽然 data1data2 具有完全不相关的尺度和含义,但它们共享完全相同的因变量:

X=40:1:44

我正在使用以下命令进行绘图,这些命令来自MATLAB plotyy documentation page

[AX,H1,H2] = plotyy(X,data1,X,data2);

set(get(AX(1),'Ylabel'),'String','This is vertical axis 1') 
set(get(AX(2),'Ylabel'),'String','This is vertical axis 2')     

set(H1,'LineStyle','none','Marker','*');
set(H2,'LineStyle','none','Marker','s');

到现在为止还挺好 . 我无法弄清楚的是如何在两个垂直轴上强制执行正确的限制 . 我希望的限制是:

ylimits1=[0 3]
ylimits2=[0 10]

How can I set limits for each vertical axis?


我试过这个

set(get(AX(1),'Ylim'),ylimits1) 
set(get(AX(2),'Ylim'),ylimits2)

foo = gca
set(foo(1),'ylim',ylimits1);
set(foo(2),'ylim',ylimits2);

但都没有工作 .

2 回答

  • 0

    以下应该有效:

    [AX,H1,H2] = plotyy(X,data1,X,data2);
    
    set(AX(1),'ylim',ylimits1);
    set(AX(2),'ylim',ylimits2);
    
  • 1

    你可以做的其他一些随意的事情

    x1 = 1:10
    y1 = x1.^2
    x2 = 10:120
    y2 = sin(x2)
    [AX,~,~] = plotyy(x1,y1,x2,y2);
    set(get(AX(1),'Xlabel'),'String','both plots')
    set(get(AX(2),'Ylabel'),'String','plot 2') 
    set(AX(1),'YLim',[1  25],'YTick',7:23)
    

相关问题