原文地址:双纵坐标绘图-Plotyy作者:原点

这篇文章由浅入深详细介绍双纵坐标绘图函数plotyy()的用法。

Plotyy()

很多时候,我们需要将两组或者多组数据量级相差很大的数据绘制在同一张图中以便观察,但往往数据较小的曲线会被较大的曲线淹没。例如下面的代码:

x=-1:.01:20; x=x';
y1=sin(x);z1=100*cos(x);
plot(x,y1,x,z1);

现实中,如果我们把利率、M1、M2等绘制在一张图内的时候也会出现这种情形。解决这类问题的办法是用双纵坐标绘图,使得大小不同的数据分别属于不同的纵坐标。

纵坐标绘图的函数plotyy基本用法是: plotyy(x1,y1,x2,y2),即可将(x1,y1)绘制在左侧纵坐标轴中,将(x2,y2)图以右侧的纵坐标为纵轴。例如上面这个例子,我们就可以用纵坐标绘图如下:

plotyy(x,y1,x,z1);

注意,蓝色的曲线和蓝色的纵坐标(左侧)相对应,绿色曲线和绿色纵坐标(右侧)相对应。这样不同量级的数据间的关系就很清楚了。一般只要掌握到这里就够了,不过我们还是继续深入下去:

多条曲线

刚才的代码适用于两条曲线,如果要多条曲线,我们需要将这些曲线分成两组,一组绘制在左侧纵坐标轴上,一组绘制在右侧纵坐标轴上。(注意,下面的语句要求各曲线的数据都是列向量)

y2=sin(x+.5); z2=exp(x/4); z3=x.^2;
plotyy(x,[y1,y2],x,[z1,z2,z3]);

图画出来了,但我们也搞不清哪条曲线是什么了。此时可以借助图例:

legend({'sin(x)','sin(x+.5)','100cos(x)','exp(x/4)','x^2'});

注:legend中的次序与plotyy中绘图数据的排列次序相同。

调整坐标轴区间和label

我们用xlim, ylim,调整坐标轴的显示区间,用xlabel和ylabel设定显示名称,用axis设定坐标轴的比例,用grid设定网格。月度下面内容前,请确保你对这些命令在单一图形中的操作都已经很熟练了。

我们先绘图:

AX=plotyy(x,[y1,y2],x,[z1,z2,z3]);

有人肯定要问那个AX是什么。这就涉及到图形句柄(graphic handle)的知识。 由于这个课程定位初级学院,所以没有详细讲述讲述句柄知识。这里也不详细说,只是告诉大家,Matlab中所有的图形元素,包括图形窗口(figure),坐标系(axis),曲线(plots)都有一个唯一的编号,这些编号被称作图形句柄。此处我们用plotyy()函数绘制了一个双纵坐标图形,绘制完毕后该函数就将两纵坐标轴对应的两个坐标系的编号(句柄)保存在AX中。故,AX内有两个数值,分别是左纵坐标系,右纵坐标系的编号。

有了这些编号,我们就可以对指定的坐标轴 作设置。逐句运行下面的代码可以清晰地看到效果。

axis(AX(1),'square');
axis(AX(2),'square');
xlim(AX(1),[-2,23]);
xlim(AX(2),[-2,23]);
ylim(AX(1),[-2,2]);
ylabel(AX(2),'右侧纵坐标');

指定曲线图形样式

对于新手,我推荐使用plottools中点击、选择、修改指定曲线的图形样式,对于老手,则可以用图形句柄的方式做。使用代码

[AX,H1,H2]=plotyy(x,[y1,y2],x,[z1,z2,z3]);

中的H1和H2分别对应左侧纵坐标和右侧纵坐标下属的曲线的句柄值。看下面的例子。

set(H1,'linestyle','-.');
set(H2,'lineWidth',2);

双纵坐标绘图-Plotyy相关推荐

  1. MATLAB双纵坐标绘图(重要)

    1.plotyy(x1,y1,x2,y2) (此方法不推荐使用) 两条曲线x1-y1.x2-y2分别以左右纵轴为纵坐标. x1 = 0:0.1:5; y1 = exp(-x1/3); x2 = 0:0 ...

  2. Matlab plotyy画双纵坐标图实例

    转载自:http://blog.sina.com.cn/s/blog_49d955150100lxoe.html Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 2 ...

  3. matlab双纵坐标的绘图命令_MATLAB画双纵坐标

    MATLAB画双纵坐标 具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数.调用格式为: plotyy(x1,y1,x2,y2) 其中 ...

  4. matlab 3个纵坐标,[转载]Matlab plotyy画双纵坐标图实例

    Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); ...

  5. Gdiplus中实现双Buffer绘图

    在编写win32 GUI相关的程序的时候,最直接的方法是使用GDI API进行绘制操作.一般为了图形绘制过程中为避免绘制过程闪动,而多采用双Buffer的做法,具体是先在一个内存DC中线将图像绘制好, ...

  6. 【Qt】2D绘图之双缓冲绘图

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制矩形 04. 双缓冲绘图 05. 附录 01. 概述 所谓的双缓冲绘图的概念.双缓冲(double-buffers)绘 ...

  7. [Qt教程] 第18篇 2D绘图(八)双缓冲绘图

    [Qt教程] 第18篇 2D绘图(八)双缓冲绘图 楼主  发表于 2013-5-2 22:07:23 | 查看: 789| 回复: 1 双缓冲绘图 版权声明 该文章原创于Qter开源社区(www.qt ...

  8. MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    转载自:ZHY_ongu的博客:MFC绘制动态曲线,用双缓冲绘图技术防闪烁 先上效果图    随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线. 所谓动画,都是一帧一帧 ...

  9. VC中的双缓冲绘图技术

    之前在做图形绘制的时候,发现在拖动图形时候,会出现闪烁的情况,后来就上网找了一下双缓冲绘图,本文非原创,只是想保存下来,以后要用的时候不用再到处去搜,也希望能帮助有这方面困惑的朋友 原文来自http: ...

  10. android双缓冲绘图技术分析

    转载请说明出处:http://www.jianshu.com/p/efc0bebfd22e 双缓冲.多缓冲技术在计算机科学中其实是一个广义的概念,不过其本质上的意思都是差不多的.今天我们就来讲一讲双缓 ...

最新文章

  1. java 线程池学习小记
  2. VMware中无法识别usb
  3. (C++ STL)list的实现
  4. [Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别
  5. 【代码】python paramiko模块代码示例:远程执行命令及上传和下载
  6. 【网址收藏】IDEA社区版(Community)和付费版(UItimate)的区别
  7. python画正方形内切圆_python画出三角形外接圆和内切圆的方法
  8. ant design pro模板_分享10 个开源免费且优秀的后台管理系统模板
  9. ML-Agents案例之看图配对
  10. BZOJ_5369_[Pkusc2018]最大前缀和_状压DP
  11. 【练习/Python】监测汇率脚本
  12. es6删除对象的某个属性
  13. excel vba 修改单元格的颜色
  14. python给图片加半透明水印_图片添加半透明文字水印 Python
  15. 什么是真实--有感于“嫁人就要嫁范跑跑!”
  16. 在fragment中怎样实现AlertDialog
  17. SAMSUNG三星70年之崛起与ECS精英的销售“铁三角”
  18. 多线程就一定比单线程快吗?
  19. 用半角的特殊符号代替全角的特殊符号
  20. zzulioj 1714 含蓄的情书

热门文章

  1. 重磅推荐 | 我精选的15个电子书下载网站!
  2. 关于Vmware中的Ubuntu不断弹窗Num Lock的问题
  3. 创建企业邮箱后如何登录邮箱?企业邮箱登陆入口在哪里?
  4. 国外计算机核心期刊易读,国内英语写作研究现状的文献综述——对十大外语类核心期刊近五年(2012-2016)的统计分析...
  5. 这是一个赞赏码(附赞赏码生成方法)
  6. python 多元字符多项式的展开问题
  7. linux ubuntu18 移植sudo指令到ARM开发板记录
  8. 联发科之殇:破碎高端梦
  9. iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
  10. 银河麒麟V10(Kylin Linux V10)之MySQL编译安装