lachance 发表于 2010-10-22 10:47

从原点画坐标轴

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

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

Happy99 发表于 2010-10-22 11:27

看看精华帖、置顶帖或是搜索下关于绘图技巧的帖子:@)
http://forum.vibunion.com/thread-78709-1-3.html
http://forum.vibunion.com/thread-70921-1-1.html
http://forum.vibunion.com/thread-23755-1-1.html

lachance 发表于 2010-10-22 19:00

想要附件的那种格式的图形显示。希望好心人帮帮我。{:{45}:}

ChaChing 发表于 2010-10-22 20:59

plot(x,y,'or'); %% ???

实在水平有限, 看不清楚LZ要的, 建议LZ说清楚些

lachance 发表于 2010-10-23 06:13

多谢 ChaChing, 我想要打印点图, 只有一个点的坐标在第二象限。 但是如果我设定了axis(), xis()第二象限的那个点就打印不出来。你可以看看我的附件图形,我就想实现那个效果,但不知道怎么做。多谢 {:{20}:}

happy 发表于 2010-10-23 08:02

借用一下http://forum.vibunion.com/thread-78709-1-3.html的PlotAxisAtOrigin(x,y)函数就可以很容易实现

clc;
clear;
plot(,,'b:');
hold on;
x=rand(50,2);
x=;
z=abs(x(:,1)-x(:,2));
plot(x(find(z<0.1),1),x(find(z<0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','m','MarkerFaceColor','m');
plot(x(find(z>=0.1),1),x(find(z>=0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','b','MarkerFaceColor','b');
PlotAxisAtOrigin(0,0)
效果图:

至于颜色和坐标标签自己调配吧

lachance 发表于 2010-10-23 10:58

非常感谢热心肠的HAPPY, 的确很管用呢。
我想知道怎么修改可以把显示坐标轴的小刻度线 改的短一些?就像我上载的那个图片里的那个小刻度线样,那样可能更好看些。{:{37}:}

happy 发表于 2010-10-23 11:35

本帖最后由 happy 于 2010-10-23 11:35 编辑

这个需要修改一下PlotAxisAtOrigin函数
例% Plot new ticks
for i=1:length(X)
    plot(,,'-k');
end;
for i=1:length(Y)
   plot(,,'-k');
end;修改为:% Plot new ticks
for i=1:length(X)
    plot(,,'-k');
end;
for i=1:length(Y)
   plot(,,'-k');
end;

zhouyang664 发表于 2010-10-23 18:56

学习了,果然很强大啊!

lachance 发表于 2010-10-23 19:19

本帖最后由 lachance 于 2010-10-23 20:58 编辑

厉害,多谢HAPPY 教授 {:{21}:}还是想知道哪些CODE 可以修改Y轴显示刻度离纵坐标近些,而且能不能把原点 坐标(0,0)不显示。

happy 发表于 2010-10-25 07:01

本帖最后由 happy 于 2010-10-25 07:02 编辑

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

clc;
clear;
plot(,,'b:');
hold on;
x=rand(50,2);
x=;
z=abs(x(:,1)-x(:,2));
plot(x(find(z<0.1),1),x(find(z<0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','m','MarkerFaceColor','m');
plot(x(find(z>=0.1),1),x(find(z>=0.1),2),'.','MarkerSize',20,'MarkerEdgeColor','b','MarkerFaceColor','b');
set(gca,'XTick',-0.2:0.2:1.0)
set(gca,'XTickLabel',{'-0.2','0.0','0.2','0.4','0.6','0.8','1.0'});
set(gca,'YTick',0.2:0.2:1.0)
set(gca,'YTickLabel',{'0.2','0.4','0.6','0.8','1.0'})
PlotAxisAtOrigin(0,0)
效果图如下:


ywh19860616 发表于 2010-10-25 07:29

好强大啊,我就只会用基本命令,佩服

lachance 发表于 2010-10-25 10:06

多谢HAPPY教授这么耐心地帮我,真是学到了不少东西.{:{23}:}

lachance 发表于 2010-10-25 18:51

本帖最后由 lachance 于 2010-10-26 04:58 编辑

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

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




页: [1]
查看完整版本: 从原点画坐标轴