• Matlab plotyy函数的使用及问题总结


     MATLAB函数,用来绘制双纵坐标图。

    调用格式:

      1.plotyy(X1,Y1,X2,Y2):以左、右不同纵轴绘制X1-Y1、X2-Y2两条曲线。
      2.plotyy(X1,Y1,X2,Y2,FUN1):以左、右不同纵轴把X1-Y1、X2-Y2两条曲线绘制成FUN1指定形式的两条曲线。
      3.plotyy(X1,Y1,X2,Y2,FUN1,FUN2):以左、右不同纵轴把X1-Y1、X2-Y2两条曲线绘制成FUN1、FUN2指定的不同形式的两条曲线。
      4.[AX,H1,H2]=plotyy(...):返回AX中创建的两个坐标轴的句柄以及H1和H2中每个图形绘图对象的句柄。AX(1)为左侧轴,                 AX(2)为右侧轴。

    1.左纵轴用于X1-Y1数据对,右纵轴用于X2-Y2数据对。
      2.轴的范围、刻度都自动产生。如果要人工设置,必须使用axis函数。
      3.FUN、FUN1、FUN2可以是MATLAB中所有接受X-Y数据对的二维绘图指令,如plot函数。

    matlab plotyy xtick的横坐标的设置问题  

     1 [AX,H1,H2] = plotyy(24,0,0,0,'plot');
     2 set(AX(1),'XColor','k','YColor','b');
     3 set(AX(2),'XColor','k','YColor','r');
     4 set(get(AX(1),'Ylabel'),'String','Plasma Glucose (mg/dl)') 
     5 set(get(AX(2),'Ylabel'),'String','Plasma Insulin (pmol/l)') 
     6 set(AX(1),'ylim',[50 250])
     7 set(AX(2),'ylim',[0 600])
     8 set(AX(1),'ytick',50:50:250)
     9 set(AX(2),'ytick',0:100:600)
    10 
    11 set(AX,'xlim',[0 24])
    12 set(AX,'xtick',0:2:24)
    13 
    14 
    15 
    16 grid on
    17 xlabel('Time (hour)')
    View Code

    如下图:

    Matlab plotyy画双纵坐标图实例:

     1 x = 0:0.01:20;
     2 y1 = 200*exp(-0.05*x).*sin(x);
     3 y2 = 0.8*exp(-0.5*x).*sin(10*x);
     4 [AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
     5 
     6 set(AX(1),'XColor','k','YColor','b');
     7 set(AX(2),'XColor','k','YColor','r');
     8 
     9 HH1=get(AX(1),'Ylabel');
    10 set(HH1,'String','Left Y-axis');
    11 set(HH1,'color','b');
    12 
    13 HH2=get(AX(2),'Ylabel');
    14 set(HH2,'String','Right Y-axis');
    15 set(HH2,'color','r');
    16 
    17 set(H1,'LineStyle','-');
    18 set(H1,'color','b');
    19 set(H2,'LineStyle',':');
    20 set(H2,'color','r');
    21 
    22 legend([H1,H2],{'y1 = 200*exp(-0.05*x).*sin(x)';'y2 = 0.8*exp(-0.5*x).*sin(10*x)'});
    23 xlabel('Zero to 20 musec.');
    24 title('Labeling plotyy');
    View Code

     Q:右边用蓝色圈起来的tick能去掉吗?由于用plotyy画图,为了使图尽量地显示出来,用了set(AX(1),'YLimMode','auto'),但这样可能会导致左边AX(1)和右边AX(2)的tick的间距不一样,影响美观。或者说能不能使plotyy画出的图两边的tick间距是一样的,这样在图形右边的tick就会重合在一起.

    A:如果只是想让plotyy的图美一些,可以使用其如下形式的调用方式:
    [AX,H1,H2] = plotyy(...)
    其中AX(2)就是右边Axes对象的句柄,拿到它以后就可以set或者get来处理了,也可以把其ytick关掉。

    A:也可以用line语句来画,就没有左边和上边的线了。

    Q:plotyy(X1,Y1,X2,Y2,FUN1,FUN2),FUN1和FUN2应该怎么写?

    A:这两个FUN代表plotyy不一定要用两个plot,比如下面的例子,一条曲线用plot,一条用semilogy

    x1=1:0.1:100;
    x2=x1;
    y1=x1;
    y2=x2.^3;
    plotyy(x1,y1,x2,y2,@plot,@semilogy)

  • 相关阅读:
    Android实战经验之图像处理及特效处理的集锦(总结版)
    Android类似于滚动的通知栏实现
    Python概览
    高效程序员的45个习惯读书笔记
    Web前台传对象字符串到后台并让后台反序列化对象字符串的方法(ASP.NET)
    发布订阅者模式之C#委托实现
    表数据复制(迁移)
    Code Smell
    Python学习过程遇到的Bug不断更新
    Resharper 7小技巧系列:导航、书签、和最近编辑
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3443735.html
Copyright © 2020-2023  润新知