【问题标题】:MATLAB: Two different y-axis limits for Multiple plots on same graphMATLAB:同一图上多个图的两个不同 y 轴限制
【发布时间】:2018-01-21 09:13:42
【问题描述】:

我需要在 MATLAB 中在同一个图形上绘制两个图。 两个数据样本中的最大值和最小值都有很大的变化,我无法通过采用相同的 y 轴限制来绘制。 我不希望使用其他 Overlaying two axes in a Matlab plot 中解释的两个刻度,但需要使用单个 y 轴并获得解决方案。 我试过代码:

x_axis_X = 1:length(S);
y_axis_Y = 1:length(N);
ylim([-1204200 -1841.6])
set(gcf,'color','w');
plot(x_axis_X, S,'o-', y_axis_Y, N, 'x-');

结果如图所示,其中一个数据样本在没有适当的 y 轴范围的情况下绘制。

第一个数据样本的 y 限制是 -1204200 到 -1841.6,第二个是 -489429345.5 到 -10408189.43。 应该如何定义 ylim 以适应同一图中的两个图? 感谢您的意见。谢谢。

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    在旧版本的 MATLAB 中,使用函数 plotyy。在最新版本的 MATLAB 中使用 yyaxis。以下是文档中的示例:

    x = linspace(0,10);
    y = sin(3*x);
    yyaxis left
    plot(x,y)
    
    z = sin(3*x).*exp(0.5*x);
    yyaxis right
    plot(x,z)
    ylim([-150 150])
    

    【讨论】:

      【解决方案2】:

      我尝试了缩放一个数据集的想法,使其具有与另一个数据集相似的大小。在这里,我将一个数据集乘以 100(或任何合适的缩放参数),然后它将与另一个数据集的大小相似。为了清楚地指出图表中哪些数据已被缩放,我使用了图例。

      plot(x,data1,x,100*data2)
      legend('data1','100*data2','location','southeast')
      

      谢谢。

      【讨论】:

        【解决方案3】:

        缩放不是最佳选择,因为您以后可能需要处理数据。例如,如果您需要对数刻度,也不起作用。

        Matlab 有几种方法可以处理它。我特别喜欢在图中使用新的轴,就像我在下面的示例中所做的那样。

        以防万一,您也在简单的谷歌搜索中找到了这个答案!

        代码:

        a=1:10;
        b=(10:-1:1)*100;
        x=1:10;
        hold on
        plot(x,a,'b')
        pax1=get(gca,'Position'); %get axis position
        ax2 = axes('Position',pax1); %create a new axis
        plot(ax2,x,b,'r') %plot new data
        set(ax2, 'Yaxislocation','right',...
        'color','none') % set it transparent and to the right
        

        【讨论】:

        • 感谢@Guto 的投入。我会试试这个方法。
        猜你喜欢
        • 1970-01-01
        • 2015-04-04
        • 2021-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多