凌绝顶 发表于 2010-11-2 18:35

subplot图形编辑的问题

本帖最后由 凌绝顶 于 2010-11-2 18:36 编辑

x=0:0.1:2*pi
for ii=1:5
    subplot(5,1,ii)
    plot(x,ii*sin(x+ii*pi/2),'.')   
end
作出图如nomoved.jpg
如何用命令的方式将nomoved.jpg变成moved.jpg的样子,nomoved.jpg是我在图形编辑里移动子图得到的,但是假如图形太多了这种方法就很不方便。如何用命令的方式调整子图之间的距离?还望高手们指教。

VibrationMaster 发表于 2010-11-2 18:41

似乎不可以。另外图间隔大了,有效面积减小了,不好看

凌绝顶 发表于 2010-11-2 18:44

回复 VibrationMaster 的帖子

是吗?子图之间不可以合并在一起吗?据说有subplot(5,1,),但我不知道怎么用。

zhouyang664 发表于 2010-11-2 19:47

看这样行不行?

%%%%%%%%%%%%%%%%%%%%%%%%%

x=0 : 0.1 : (2*pi) ;

h1 = axes('position', ) ;
plot(x, 1*sin(x+1*pi/2), 'parent',h1)    ;

h2 = axes('position', ) ;
plot(x, 2*sin(x+2*pi/2),'parent', h2)    ;

h3 = axes('position', ) ;
plot(x, 3*sin(x+3*pi/2),'parent', h3)    ;

h4 = axes('position', ) ;
plot(x, 4*sin(x+4*pi/2), 'parent',h4)    ;

%%%%%%%%%%%%%%%%%%%


当然,还可以给x轴,y轴加label,或者将上面x轴的labeltick去掉,或者其他一些都是可以的
有什么问题再探讨!

凌绝顶 发表于 2010-11-2 20:00

回复 zhouyang664 的帖子

这样似乎不利于循环编程

Rainyboy 发表于 2010-11-2 22:21

我来发个联动链接:
用python做数值计算,spyder 上的调试分形算法
http://forum.vibunion.com/forum-viewthread-tid-96990-fromuid-159019.html
二楼有相关讨论。

bainhome 发表于 2010-11-2 22:39

本来想在simwe发了了事,不过响应chaching老兄的号召,到这里胡言乱语一下。clc;clear;figure
x=0:0.1:2*pi;
t=[];
for ii=1:5
    h(ii)=subplot(5,1,ii,'position',[]);
    plot(x,ii*sin(x+ii*pi/2),'.')
    % t=;
end
% D=diff(t(:,2));代码里的position几个具体数字是有讲究的,可以通过注释掉的两行代码看看子轴位置,然后相应调整subplot代码行中的第一个子轴y坐标“0.8007”和步长“0.18”,我电脑原本是默认0.17多,由最后一行代码确定。
这个数字一旦确定,你可以随便循环。注意我的句柄也是个子序列。
最后顺便说一句:我电脑里运行,竖向别说放5个,改成8个10个子图也没有相互拥挤的现象,也许与版本或机器本身有关,换台机器换个高版本run一下,也许有意外发现。

ChaChing 发表于 2010-11-2 23:43

回复 bainhome 的帖子

本想先扣威望(原因:高手只来转转不愿秀功夫!)再加回, 怎奈上面收回了这些权利, 太不好玩了!;@P 别说了, 这或许因我而起, 真对不住大家
我可没LS般本来就会许多的, 许多都得先花时间试再回, 虽然个人可学更多, 但年纪大了, 学什麽忘什麽! 有点不太想花太多时间试了!:@L
本身学毕後一直在振动这块混一口饭吃, 所以这论坛许多版块值得个人去学习, 当然希望像马老师般的高手能多在这里出手让我学习!:handshake

ChaChing 发表于 2010-11-3 00:37

竟与老友哈拉, 文不对题! 抱歉下:@)
记得回过类似的帖, 怎奈以前的收藏及回覆都没了, 全文搜索功能好像也没复原, 一直没能找到!:@L
反正大体, 与楼上几位高手类似!
或许也可至官网找找现成的, 如MULTIPLOT...

凌绝顶 发表于 2010-11-3 12:18

chaching老兄和bainhome也去过simwe啊?

VibrationMaster 发表于 2010-11-3 13:02

其实应该x轴的坐标只显示最下面的一个,我以前写过类似的东西。但我想不宜太强调这些。这些直接用到论文或报告里面不漂亮,还是要重新修饰的

zhouyang664 发表于 2010-11-3 13:27

回复 VibrationMaster 的帖子

想只显示最下面的坐标,只需将上面的坐标轴的 xTickLabel 设置成 [] 即可
set(hAxes,'xTickLabel',[]);

趁这个机会,献上修改版:

%%%%%%%%%%%%%%%%%%%%%%%%%
x=0 : 0.1 : (2*pi)         ;
N = 4                           ;      % 需要设定的axis的数目
LStyle = {':', '--', '.', '-.'};      % 设定线型
h = zeros(1, N)               ;      % 预分配
fork=1 : N
    h(k) = axes('position', )               ;
    plot(x, k * sin(x + k*pi/2), 'LineStyle',LStyle{k}, 'Parent', h(k)) ;
end
set( h(2 : end), 'xticklabel', [ ]);
%%%%%%%%%%%%%%%%%%%


凌绝顶 发表于 2010-11-3 16:28

由楼上程序运行得到的结果,去掉坐标轴,保存为eps格式的文件,但是eps文件里页边距太大,如何在matlab中以命令的方式调整图形窗口大小,使得保存的eps文件页边距大小适当?由于论坛不支持上传eps文件,故截屏保存为jpg文件,如图,图形距离虚线框距离太远,如何调整?

zhouyang664 发表于 2010-11-3 18:00

回复 凌绝顶 的帖子

h(k) = axes('position', )    ;
只需0.1,改成0.05或者别的即可!

VibrationMaster 发表于 2010-11-3 19:39

必须使用set(gca,,'xlim',)
页: [1] 2
查看完整版本: subplot图形编辑的问题