【问题标题】:plotting two axes semilog matlab绘制两个轴半对数 matlab
【发布时间】:2016-05-17 13:12:30
【问题描述】:

我有 2 个具有相同 x 数据的图:

x=[0 100];
y1=x^2;
y2=e^x;

我想用 semilogy(即对数刻度)绘制 y2。 我怎样才能将它们绘制在一起? 左侧——y1 Y轴; 右侧——y2 Y轴;

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    好吧,通过 Google 快速搜索您在问题中提供的术语(即,'semilogy''plotting two axes matlab')会告诉你我给你看的。总之……

    您可以使用内置的yyaxis function 来...

    创建一个包含两个 y 轴的图表。

    您可以使用内置的semilogy function 来...

    创建一个绘图,其中 y 轴为对数刻度,x 轴为线性刻度。

    总而言之,这几乎只是我在上面链接的yyaxis 函数文档中提供的代码的通用版本...

    x = [ insert your x-data];
    y1 = insert-your-first-func;
    yyaxis left
    plot(x,y1)
    
    y2 = insert-your-second-func;
    yyaxis right
    semilogy(x,y2)
    

    编辑: 如果使用小于 2016a 的 Matlab 版本,那么您将无法利用 yyaxis 函数的实用性。在这种情况下,StackOverflow 上有很多问题(如 this onethat one)解释了如何在相同的 x 轴上绘制两组数据,但在不同的 y 轴(即线性和例如半对数)。

    答案也在plotyy documentation 中!这里是:

    plotyy(X1,Y1,X2,Y2,'function1','function2') 使用 function1(X1,Y1) 绘制左侧轴的数据,使用 function2(X2,Y2) 绘制右侧的数据轴。

    function 可以是函数句柄或字符串,指定 plot、semilogx、semilogy、loglog、stem 或任何接受 语法:h = function(x,y)

    上面的代码现在看起来像...

    x = [ insert your x-data];
    y1 = insert-your-first-func;
    y2 = insert-your-second-func;
    plotyy(x,y1,x,y2,'plot','semilogy');
    

    编码愉快!请记住,Google 是您的朋友!

    【讨论】:

    • 确实如此。如果 OP 使用的是 MATLAB plotyy 是他们最好的选择。 StackOverflow 上有很多问题,比如herehere,已经解释了如何使用plotyy 来达到这个目的。
    • @BillBokeey 我会在我的回答中提到它,这样任何发现这个问题的人都知道还有其他选择:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2019-01-17
    • 2017-10-09
    • 2014-08-22
    • 2011-10-21
    • 2011-02-19
    相关资源
    最近更新 更多