star19831106 发表于 2009-7-1 10:07:01

请问这种作图效果能在matlab中直接实现吗?

本帖最后由 star19831106 于 2009-7-1 10:15 编辑


请问这种作图效果能在matlab中直接实现吗?
而不是通过放大,截图粘贴。
谢谢!!!

messenger 发表于 2009-7-1 10:41:49

可以。Matlab 7.0 以上,用plottools即可

star19831106 发表于 2009-7-1 15:04:50

谢谢指导!
恕小弟愚钝!
可否再指导得详细一点,比如plottools在那个子图是通过哪些操作获得的。
不胜感激!!!

SunVisual 发表于 2009-7-2 17:56:18

matlab绘图技巧:help plot,subplot,xlabel,ylabel,title!!!

bainhome 发表于 2009-7-2 21:14:41

本帖最后由 bainhome 于 2009-7-2 23:52 编辑

plottool可能不行,因为好像不能解决图形层叠的问题。而4楼应该根本没有测试就让人去看help,因为最有可能的是subplot命令,这个命令根据我试验,不允许出现position有交集的情况。这样回答问题态度可不行,说不定别人对MATLAB比你还要熟悉哦。
我感觉这个问题用MATLAB画不太好,毕竟别人基本命令中的绘图框架已经定好了,要修改难度还不算太小。不如用asymptote+TeX来画这种图形:

另外我今天怎么上传jpg和png格式图片说是不支持格式,你们有这种情况吗?

messenger 发表于 2009-7-2 23:28:46

如果自己搞不懂的话,这有一个人家做好的了(matlab做的):zoomSoft-画中画缩放软件

bainhome 发表于 2009-7-3 00:01:38

应该如果不是r2006a的话,就无法使用这个zoomsoft。发这个东东的同学没有给出解释、没有给出M文件,这样的东西很难推广、很难使人接受。

ydlcsu 发表于 2009-7-3 11:40:43

本帖最后由 ydlcsu 于 2009-7-3 11:43 编辑

不知道你所谓的直接实现是想一个命令直接搞定还是怎么的。如果只是用matlab来得的一个那样的图还是完全可以的,在2007版本下比较方便,因为可以通过交互界面来设置figure,axes等的属性。首先在figure中画好外面那个大图。然后选中画好的axes,拷贝,在原figure中直接粘贴,这时,figure中应该会有2个一样的axes,选中其中一个,调节大小和位置得到小图。接着设置小图的坐标范围以显示要放大的部分。最后添加虚线框和箭头,insert菜单下能找到。

bainhome 发表于 2009-7-3 13:08:09

本帖最后由 bainhome 于 2009-7-3 13:11 编辑

赞!
ydlcsu所说直接copy轴提醒了我,前面困在了对subplot的修改上思路钻了牛角尖...不过轴无需copy,直接生成一个会更加灵活,给出代码完整此问题:
1.command windows输入:>> CordPositionMainAxes=;
>> CordPositionSubAxes=[.7,.6,.2,.2];
2.编写如下函数实现轴放大:function createfigure(CordPositionMainAxes,CordPositionSubAxes)
CordPositionArrowX=;
CordPositionArrowY=;
annotation('arrow',CordPositionArrowX,CordPositionArrowY);
x=linspace(0,pi);
y=sin(x);
plot(x,y);
hold on
rectangle('position',CordPositionMainAxes,'linestyle','--')
axis square
axes('position',CordPositionSubAxes)
box on
plot(x,y,'red')
axis()
axis square前面我的说法过于武断,致歉。

star19831106 发表于 2009-7-3 17:17:32

谢谢各位老大的帮助!
特别是bainhome 先生!
由于对matlab相对较熟。
数据也是用matlab获得的。
才想着用matlab完成。
后来了解到这种图用origin应该能更容易一些!
再次谢谢大家!

hjdwg 发表于 2009-9-3 16:23:05

本帖最后由 hjdwg 于 2009-9-3 16:24 编辑

1# star19831106
有那么费事吗?拷贝粘贴就解决了。非要编程也没办法。

yelv123 发表于 2009-9-4 11:25:25

axes函数中的'position'参数应该可以实现,一个例子
x = 0 : 0.01 : 2 * pi;
y1 = sin(x); y2 = cos(x); y3 = sin(x) + cos(x);
plot(x, y1)
axes('position', )
plot(x, y2)
xlabel('y2 = cos(x)');
axes('position', )
plot(x, y3)
xlabel(' y3 = sin(x) + cos(x)');

czhangxj83 发表于 2009-9-8 19:16:02

那个图形明显是用TECPLOT做的 。

shunfly 发表于 2009-9-12 23:59:53

是SMTH MATHTOOLS版的hjdwg吧?
1# star19831106
有那么费事吗?拷贝粘贴就解决了。非要编程也没办法。
hjdwg 发表于 2009-9-3 16:23 http://forum.simwe.com/images/common/back.gif
页: [1]
查看完整版本: 请问这种作图效果能在matlab中直接实现吗?