声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3271|回复: 7

[绘图技巧] 双plotyy图形绘制的问题

[复制链接]
发表于 2007-10-8 21:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
绘图的代码如下:
  1. [/code]
  2. clear;close all;
  3. x1=-150:1:-0.00001;
  4. x2=0.0001:1:16;
  5. n=0:10;
  6. [mm,nn]=size(x1);
  7. [mm1,nn1]=size(x2);
  8. for i=1:nn
  9.     a1=(-1).^n.*((0.4-sqrt(1e4))/(0.4+sqrt(1e4))).^n.*(erfc((0.0032.*(n+1)-0.0001.*x1(1,i).*sqrt(1e-4))./(2*sqrt(10*1e-8)))+erfc((0.0032.*n-0.0001.*x1(1,i).*sqrt(1e-4))./(2*sqrt(10*1e-8))));
  10. %%  
  11.     y1(1,i)=5.*(1-(0.4.*sqrt(1e-4)./(1+0.4*sqrt(1e-4))).*sum(a1));
  12. end
  13. for i=1:nn1
  14.     a2=(-1).^n.*((0.4-sqrt(1e4))/(0.4+sqrt(1e4))).^n.*(erfc((0.0032.*n+0.0001.*x2(1,i))./(2*sqrt(10*1e-8)))-erfc((0.0032.*(n+1)-0.0001.*x2(1,i))./(2*sqrt(10*1e-8))));
  15.     y2(1,i)=5.*((0.4/(1+0.4*sqrt(1e-4))).*sum(a2));
  16. end
  17. x11=-150:1:-0.00001;
  18. x12=0.0001:1:16;
  19. n=0:10;
  20. [mm,nn]=size(x11);
  21. [mm1,nn1]=size(x12);
  22. for i=1:nn
  23.    a11=(-1).^n.*((0.2-sqrt(1e4))/(0.2+sqrt(1e4))).^n.*(erfc((0.0032.*(n+1)-0.0001.*x11(1,i).*sqrt(1e-4))./(2*sqrt(10*1e-8)))+erfc((0.0032.*n-0.0001.*x11(1,i).*sqrt(1e-4))./(2*sqrt(10*1e-8))));
  24.   y11(1,i)=5.*(1-(0.2.*sqrt(1e-4)./(1+0.2*sqrt(1e-4))).*sum(a11));
  25. end
  26. for i=1:nn1
  27.     a12=(-1).^n.*((0.2-sqrt(1e4))/(0.2+sqrt(1e4))).^n.*(erfc((0.0032.*n+0.0001.*x12(1,i))./(2*sqrt(10*1e-8)))-erfc((0.0032.*(n+1)-0.0001.*x12(1,i))./(2*sqrt(10*1e-8))));
  28.     y12(1,i)=5.*((0.2/(1+0.2*sqrt(1e-4))).*sum(a12));
  29. end
  30. [AX1,H11,H12]=plotyy(x11,y11,x12,y12);
  31. hold on
  32. [AX,H1,H2] = plotyy(x1,y1,x2,y2,'plot')
  33. set(H1,'LineStyle','--','color','r','linewidth',2)
  34. set(H2,'LineStyle',':','color','r','linewidth',2)
复制代码
可以看出绘制的图,右边的y轴标注重叠。另外由于用了hold on,致使前后2个plotyy的坐标系统完全独立(从右边y轴的标注可以看出来)。目的是想让第二次的plotyy在第一个plotyy产生的坐标里绘图,也就是让他们的坐标一致。该如何设置呢?看了plotyy的doc文档,里边只有设置ylabel的方法。set(get(AX(1),'Ylabel'),'String','Left Y-axis')set(get(AX(2),'Ylabel'),'String','Right Y-axis');但是没有设置其他参数的方法,求高手帮忙。

plot是可以绘制但是效果不好:@( ,附图里的正确曲线走势是用plot绘制的

[ 本帖最后由 无水1324 于 2007-10-8 22:05 编辑 ]
temp.PNG
回复
分享到:

使用道具 举报

发表于 2007-10-8 21:50 | 显示全部楼层
看得不是太懂,你看看以下帖子 bainhome 所贴的代码是否对你有帮助:
http://forum.vibunion.com/forum/viewthread.php?tid=24244

评分

1

查看全部评分

发表于 2007-10-8 22:01 | 显示全部楼层

回复 #2 eight 的帖子

与他这个有点差异,主要是右边的要重合在一起
发表于 2007-10-8 22:09 | 显示全部楼层

回复 #1 花如月 的帖子

试试这个

[AX1,H11,H12]=plotyy([ x11.'  x1.' ], [y11.'  y1.'], [x12.' x2.'], [y12.'  y2.']);

评分

1

查看全部评分

 楼主| 发表于 2007-10-8 22:09 | 显示全部楼层
bainhome 太强了,正在消化他的代码。不过正如楼上所说,他是在一个图中建立了多个axes。然后把位置错开分别绘图,这里是2个plotyy有4个y轴。主要是想让2个plotyy共用一个axes,用hold on后他们的axes是独立的,才导致重合和曲线不对的问题
 楼主| 发表于 2007-10-8 22:13 | 显示全部楼层

回复 #4 xray 的帖子

多谢,在help文档里并没有看到这种调用的格式。你在哪儿看到的?
发表于 2007-10-8 22:22 | 显示全部楼层

回复 #6 花如月 的帖子

help plot
    PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
    then the vector is plotted versus the rows or columns of the matrix,
    whichever line up.

说明:
1. plot 和 plotyy 绘图的原理是一样的
2. 当plot的输入是矩阵时,在同一坐标轴内分别绘制各个列向量

评分

1

查看全部评分

发表于 2007-10-9 15:38 | 显示全部楼层

回复 #7 xray 的帖子

谢谢,高手 !
看来我学的东西不会变通哈
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 23:22 , Processed in 0.069407 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表