声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3396|回复: 13

[编程技巧] 从原点画坐标轴

[复制链接]
发表于 2010-10-22 10:47 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lachance 于 2010-10-22 10:56 编辑

请问MATLAB如何从原点画坐标轴(两条射线的那种),并且将第二象限的点也显示出来?程序里用了这条语句axis([0 0.4 0 0.701])。
多谢

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2010-10-22 11:27 | 显示全部楼层
 楼主| 发表于 2010-10-22 19:00 | 显示全部楼层
想要附件的那种格式的图形显示。希望好心人帮帮我。
origan graph.png
发表于 2010-10-22 20:59 | 显示全部楼层
plot(x,y,'or'); %% ???

实在水平有限, 看不清楚LZ要的, 建议LZ说清楚些
 楼主| 发表于 2010-10-23 06:13 | 显示全部楼层
多谢 ChaChing, 我想要打印点图, 只有一个点的坐标在第二象限。 但是如果我设定了axis([0 0.4 0 0.701]), xis([0 0.4 0 0.701])第二象限的那个点就打印不出来。你可以看看我的附件图形,我就想实现那个效果,但不知道怎么做。多谢
发表于 2010-10-23 08:02 | 显示全部楼层
借用一下http://forum.vibunion.com/thread-78709-1-3.html的PlotAxisAtOrigin(x,y)函数就可以很容易实现

  1. clc;
  2. clear;
  3. plot([0,1],[0,1],'b:');
  4. hold on;
  5. x=rand(50,2);
  6. x=[x;-0.2*rand(1),0.2*rand(1)];
  7. z=abs(x(:,1)-x(:,2));
  8. plot(x(find(z<0.1),1),x(find(z<0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','m','MarkerFaceColor','m');
  9. plot(x(find(z>=0.1),1),x(find(z>=0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','b','MarkerFaceColor','b');
  10. PlotAxisAtOrigin(0,0)
复制代码

效果图:
无标题.png
至于颜色和坐标标签自己调配吧

评分

1

查看全部评分

 楼主| 发表于 2010-10-23 10:58 | 显示全部楼层
非常感谢热心肠的HAPPY, 的确很管用呢。
我想知道怎么修改可以把显示坐标轴的小刻度线 改的短一些?就像我上载的那个图片里的那个小刻度线样,那样可能更好看些。
发表于 2010-10-23 11:35 | 显示全部楼层
本帖最后由 happy 于 2010-10-23 11:35 编辑

这个需要修改一下PlotAxisAtOrigin函数
  1. % Plot new ticks  
  2. for i=1:length(X)
  3.     plot([X(i) X(i)],[0 Yoff],'-k');
  4. end;
  5. for i=1:length(Y)
  6.    plot([Xoff, 0],[Y(i) Y(i)],'-k');
  7. end;
复制代码
修改为:
  1. % Plot new ticks  
  2. for i=1:length(X)
  3.     plot([X(i) X(i)],[0 Yoff/2],'-k');
  4. end;
  5. for i=1:length(Y)
  6.    plot([Xoff/3, 0],[Y(i) Y(i)],'-k');
  7. end;
复制代码

评分

1

查看全部评分

发表于 2010-10-23 18:56 | 显示全部楼层
学习了,果然很强大啊!
 楼主| 发表于 2010-10-23 19:19 | 显示全部楼层
本帖最后由 lachance 于 2010-10-23 20:58 编辑

厉害,多谢HAPPY 教授 还是想知道哪些CODE 可以修改Y轴显示刻度离纵坐标近些,而且能不能把原点 坐标(0,0)不显示。
发表于 2010-10-25 07:01 | 显示全部楼层
本帖最后由 happy 于 2010-10-25 07:02 编辑

刻度离坐标轴的距离是通过
  1. % ADD LABELS
  2. text(X,zeros(size(X))-2.*Yoff,XL);
  3. text(zeros(size(Y))-3.*Xoff,Y,YL);
复制代码
控制的,比如修改为:
  1. % ADD LABELS
  2. text(X,zeros(size(X))-2.*Yoff*0.7,XL);
  3. text(zeros(size(Y))-3.*Xoff*0.7,Y,YL);
复制代码
至于标签的控制可以通过如下方式实现,例如:

  1. clc;
  2. clear;
  3. plot([0,1],[0,1],'b:');
  4. hold on;
  5. x=rand(50,2);
  6. x=[x;-0.2*rand(1),0.2*rand(1)];
  7. z=abs(x(:,1)-x(:,2));
  8. plot(x(find(z<0.1),1),x(find(z<0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','m','MarkerFaceColor','m');
  9. plot(x(find(z>=0.1),1),x(find(z>=0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','b','MarkerFaceColor','b');
  10. set(gca,'XTick',-0.2:0.2:1.0)
  11. set(gca,'XTickLabel',{'-0.2','0.0','0.2','0.4','0.6','0.8','1.0'});
  12. set(gca,'YTick',0.2:0.2:1.0)
  13. set(gca,'YTickLabel',{'0.2','0.4','0.6','0.8','1.0'})
  14. PlotAxisAtOrigin(0,0)
复制代码

效果图如下:


无标题.png
发表于 2010-10-25 07:29 | 显示全部楼层
好强大啊,我就只会用基本命令,佩服
 楼主| 发表于 2010-10-25 10:06 | 显示全部楼层
多谢HAPPY教授这么耐心地帮我,真是学到了不少东西.
 楼主| 发表于 2010-10-25 18:51 | 显示全部楼层
本帖最后由 lachance 于 2010-10-26 04:58 编辑

happy 教授,还有个问题,我的MATLAB打印的曲线好像看着不直,请看下面那条几乎水平的线,非常不直,歪歪扭扭的感觉。
请问怎么修改系统参数可以让曲线能比较光滑?

害怕你看不到帖子,所以没有重新开新帖子。如果需要,请版主把这个帖子移到新帖子里。 谢谢。




光滑曲线

光滑曲线
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 14:38 , Processed in 0.068216 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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