• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab plotyy画双纵坐标图实例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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);
[AX,H1,H2] = plotyy(x,y1,x,y2,\'plot\');

set(AX(1),\'XColor\',\'k\',\'YColor\',\'b\');
set(AX(2),\'XColor\',\'k\',\'YColor\',\'r\');

HH1=get(AX(1),\'Ylabel\');
set(HH1,\'String\',\'Left Y-axis\');
set(HH1,\'color\',\'b\');

HH2=get(AX(2),\'Ylabel\');
set(HH2,\'String\',\'Right Y-axis\');
set(HH2,\'color\',\'r\');

set(H1,\'LineStyle\',\'-\');
set(H1,\'color\',\'b\');
set(H2,\'LineStyle\',\':\');
set(H2,\'color\',\'r\');

legend([H1,H2],{\'y1 = 200*exp(-0.05*x).*sin(x)\';\'y2 = 0.8*exp(-0.5*x).*sin(10*x)\'});
xlabel(\'Zero to 20 musec.\');
title(\'Labeling plotyy\');

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)

来源:http://hi.baidu.com/wang_pw/blog/item/ede4c1fd6e51773d5c6008f2.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MATLAB画双纵坐标

 

具有两个纵坐标标度的图形
在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为:
plotyy(x1,y1,x2,y2)
其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。

双y轴坐标可以用plotyy(x,y1,x,y2)来实现
双x坐标可以用
set(gca,\'xaxislocation\',\'bottom\',\'xticklabel\',{\'0\',\'1\',\'2\',\'3\',\'4\'}) (假设x轴的标注为1,2,3,4)
set(gca,\'xaxislocation\',\'top\',\'xticklabel\',{\'0\',\'1\',\'2\',\'3\',\'4\'})
进行相应的设置

【 * 例 10.7.3 -1 】制作一个双坐标系用来表现高压和低温两个不同量的过渡过程。

tp=(0:100)/100*5;yp=8+4*(1-exp(-0.8*tp).*cos(3*tp)); % 压力数据

tt=(0:500)/500*40;yt=120+40*(1-exp(-0.05*tt).*cos(tt)); % 温度数据

% 产生双坐标系图形

clf reset,h_ap=axes(\'Position\',[0.13,0.13,0.7,0.75]); %<4>

set(h_ap,\'Xcolor\',\'b\',\'Ycolor\',\'b\',\'Xlim\',[0,5],\'Ylim\',[0,15]);

nx=10;ny=6; %<6>

pxtick=0:((5-0)/nx):5;pytick=0:((15-0)/ny):15; %<7>

set(h_ap,\'Xtick\',pxtick,\'Ytick\',pytick,\'Xgrid\',\'on\',\'Ygrid\',\'on\')

h_linet=line(tp,yp,\'Color\',\'b\'); %<9>

set(get(h_ap,\'Xlabel\'),\'String\',\' 时间 /rightarrow (分) \')

set(get(h_ap,\'Ylabel\'),\'String\',\' 压力 /rightarrow(/times10 ^{5} Pa )\')

h_at=axes(\'Position\',get(h_ap,\'Position\')); %<12>

set(h_at,\'Color\',\'none\',\'Xcolor\',\'r\',\'Ycolor\',\'r\'); %<13>

set(h_at,\'Xaxislocation\',\'top\') %<14>

set(h_at,\'Yaxislocation\',\'right\',\'Ydir\',\'rev\') %<15>

set(get(h_at,\'Xlabel\'),\'String\',\'/fontsize{15}/fontname{ 隶书 } 时间 /rightarrow (分) \')

set(get(h_at,\'Ylabel\'),\'String\',\' ( {/circ}C )/fontsize{15} /leftarrow /fontname{ 隶书 } 零下温度 \')

set(h_at,\'Ylim\',[0,210]) %<18>

line(tt,yt,\'Color\',\'r\',\'Parent\',h_at) %<19>

xpm=get(h_at,\'Xlim\'); %<20>

txtick=xpm(1):((xpm(2)-xpm(1))/nx):xpm(2); %<21>

tytick=0:((210-0)/ny):210; %<22>

set(h_at,\'Xtick\',txtick,\'Ytick\',tytick) %<23>



来源:http://hi.baidu.com/goodenoughcui/blog/item/e9a00b8b7ad52d6f9e2fb4d2.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

实例(已验证):

clc;
clear all;
close all;
x=0:0.1:2*pi;
y1=sin(x);
y2=cos(x);
[AX]=plotyy(x,y1,x,y2);
set(get(gca,\'xlabel\'),\'string\',\'X-axis\');
set(get(AX(1),\'Ylabel\'),\'string\',\'left Y-axis\');
set(get(AX(2),\'Ylabel\'),\'string\',\'right Y-axis\');
set(gca,\'xTick\',[0:0.5:7]);
set(AX(1),\'yTick\',[-1:0.2:1]);
set(AX(2),\'yTick\',[-1:0.5:1]);

 

尚存在问题:这种设置方法,对各个轴的最小刻度单位可以设置,但是刻度范围(x取(0~7),y1取(-1~1))不能设置。
2010-12-23修改

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

clc
clear all
close all
runoff=[10700 11400 15800 22900 43100 40700 50500 46000 41800 35000];
sed=[0.105 0.094 0.156 1.264  

 0.363 0.429 0.731 0.682 0.654 0.290];
m=1:10;
[ax,h1,h2]=plotyy(m,runoff,m,sed); %h-- line handle
set(get(ax(1),\'Ylabel\'),\'string\',\'Runoff (m^3/s))\',\'color\',\'r\') %y1
set(get(ax(2),\'Ylabel\'),\'string\',\'Sediment concentration (kg/m^3)\',\'color\',\'k\') %y2
xlabel(\'Month\')
set(h1,\'linestyle\',\'-\',\'color\',\'r\');   
set(h2,\'linestyle\',\'- -\',\'color\',\'k\');
legend([h1 h2],\'runoff\',\'sediment concentration\') %标注两条线
legend(\'boxoff\')
% box off
set(ax(:),\'Ycolor\',\'k\') %设定两个Y轴的颜色为黑色
set(ax(1),\'ytick\',[0:10000:100000]); %设置y轴间隔
set(ax(2),\'ytick\',[0:0.1:1.5])
set(ax,\'xlim\',[1 12]) % 设置x轴范围
hold on
scatter(ax(1),4,22900,\'r*\')
axes(ax(2));
hold on
scatter(4,1.264,\'ro\')

  

来源:http://hi.baidu.com/imhuanxi/blog/item/a1f69bcadf68a54af21fe7d2.html

 

2011年4月22日新增

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab图像处理(一)--图片读写发布时间:2022-07-18
下一篇:
使用MATLAB 拼接图片发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap