声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 7438|回复: 22

[图像处理] subplot图形编辑的问题

  [复制链接]
发表于 2010-11-2 18:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 凌绝顶 于 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是我在图形编辑里移动子图得到的,但是假如图形太多了这种方法就很不方便。如何用命令的方式调整子图之间的距离?还望高手们指教。
moved.jpg
nomoved.jpg
回复
分享到:

使用道具 举报

发表于 2010-11-2 18:41 | 显示全部楼层
似乎不可以。另外图间隔大了,有效面积减小了,不好看
 楼主| 发表于 2010-11-2 18:44 | 显示全部楼层
回复 VibrationMaster 的帖子

是吗?子图之间不可以合并在一起吗?据说有subplot(5,1,[1 5]),但我不知道怎么用。
发表于 2010-11-2 19:47 | 显示全部楼层
看这样行不行?

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

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

h1 = axes('position', [0.1,0.1,0.8,0.2]) ;
plot(x, 1*sin(x+1*pi/2), 'parent',h1)    ;

h2 = axes('position', [0.1,0.3,0.8,0.2]) ;
plot(x, 2*sin(x+2*pi/2),'parent', h2)    ;

h3 = axes('position', [0.1,0.5,0.8,0.2]) ;
plot(x, 3*sin(x+3*pi/2),'parent', h3)    ;

h4 = axes('position', [0.1,0.7,0.8,0.2]) ;
plot(x, 4*sin(x+4*pi/2), 'parent',h4)    ;

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


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

评分

1

查看全部评分

 楼主| 发表于 2010-11-2 20:00 | 显示全部楼层
回复 zhouyang664 的帖子

这样似乎不利于循环编程
发表于 2010-11-2 22:21 | 显示全部楼层
我来发个联动链接:
用python做数值计算,spyder 上的调试分形算法
http://forum.vibunion.com/forum- ... fromuid-159019.html
二楼有相关讨论。

评分

1

查看全部评分

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

评分

2

查看全部评分

发表于 2010-11-2 23:43 | 显示全部楼层
回复 bainhome 的帖子

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

点评

To bainhome: 扣你分, 开个玩笑嘛 :)  发表于 2010-11-3 00:03
老大太客气了。我这都是瞎玩儿。其实感觉轴属性的设置无非在set/get之间转来转去,所以任何图形中的零件恐怕都能找到办法稍微动一动。ps:干嘛扣我分啊,我在这里挺老实的,不像在那边论坛的嚣张跋扈,呵呵  发表于 2010-11-2 23:58
发表于 2010-11-3 00:37 | 显示全部楼层
竟与老友哈拉, 文不对题! 抱歉下:@)
记得回过类似的帖, 怎奈以前的收藏及回覆都没了, 全文搜索功能好像也没复原, 一直没能找到!:@L
反正大体, 与楼上几位高手类似!
或许也可至官网找找现成的, 如MULTIPLOT...
 楼主| 发表于 2010-11-3 12:18 | 显示全部楼层
chaching老兄和bainhome也去过simwe啊?

点评

Yes, 不得不说simwe的matlab比较乾净些 :)  发表于 2010-11-4 00:31
这里很多人都在simwe和振动混  发表于 2010-11-3 18:58
发表于 2010-11-3 13:02 | 显示全部楼层
其实应该x轴的坐标只显示最下面的一个,我以前写过类似的东西。但我想不宜太强调这些。这些直接用到论文或报告里面不漂亮,还是要重新修饰的
发表于 2010-11-3 13:27 | 显示全部楼层
回复 VibrationMaster 的帖子

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

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

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

自定义axis

自定义axis

评分

1

查看全部评分

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

未命名.jpg
发表于 2010-11-3 18:00 | 显示全部楼层
回复 凌绝顶 的帖子

h(k) = axes('position', [0.1, -0.1 + k*0.2, 0.8, 0.2])    ;
只需0.1,改成0.05或者别的即可!
发表于 2010-11-3 19:39 | 显示全部楼层
必须使用set(gca,,'xlim',[0,6])
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-14 15:02 , Processed in 0.072196 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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