声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8342|回复: 8

[绘图技巧] 绘图时如何控制各图之间的间距

[复制链接]
发表于 2008-4-21 09:56 | 显示全部楼层 |阅读模式

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

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

x
请教各位大侠,我用matlab在一个figure里显示四幅图片(2*2排列),如果不做特殊处理的话,左右两列之间的间距较大,我想减小这个间距,不知道该怎么弄?subplot的position属性我试着更改过了,发现没有变化。是否还有其它的方法可以实现这个目的?谢谢!

[ 本帖最后由 eight 于 2008-4-21 19:52 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-4-21 10:21 | 显示全部楼层

回复 楼主 的帖子

如果方便的话,请您把图像和代码帖出来,这样可以让大家调试
发表于 2008-4-21 10:36 | 显示全部楼层
昨天刚画了一个相关程序 整体贴下来给你:修改红色部分就可以,是按百分比设置的,0.08是8%的意思
figure1=figure('Units', 'Pixels', 'Position', [200 200 700 500]);
axes1 = axes('Position',[0.08 0.73 0.38 0.25],'Parent',figure1);
axis(axes1,[0 xtime(end) -0.5 0.5]);
title(axes1,'第一个标题','Position',[3 -0.75]);
xlabel(axes1,'t/s');
ylabel(axes1,'幅度');
box(axes1,'on');
hold(axes1,'all');
plot(xtime,clean);
axes2 = axes('Position',[0.58 0.73 0.38 0.25],'Parent',figure1);
axis(axes2,[0 xtime(end) 0 4000]);
xlabel(axes2,'t/s');
ylabel(axes2,'频率/Hz');
box(axes2,'on');
hold(axes2,'all');
specgram(clean,[],fsamp)

axes3 = axes('Position',[0.08 0.40 0.38 0.25],'Parent',figure1);
axis(axes3,[0 xtime(end) -0.5 0.5]);
xlabel(axes3,'t/s');
ylabel(axes3,'幅度');
box(axes3,'on');
hold(axes3,'all');
plot(xtime,x);
axes4 = axes('Position',[0.58 0.40 0.38 0.25],'Parent',figure1);
axis(axes4,[0 xtime(end) 0 4000]);

xlabel(axes4,'t/s');
ylabel(axes4,'频率/Hz');
box(axes4,'on');
hold(axes4,'all');
specgram(x,[],fsamp)

axes5 = axes('Position',[0.08 0.07 0.38 0.25],'Parent',figure1);
axis(axes5,[0 xtime(end) -0.5 0.5]);
xlabel(axes5,'t/s');
ylabel(axes5,'幅度');
box(axes5,'on');
hold(axes5,'all');
plot(xtime,enhance);
axes6 = axes('Position',[0.58 0.07 0.38 0.25],'Parent',figure1);
axis(axes6,[0 xtime(end) 0 4000]);
xlabel(axes6,'t/s');
ylabel(axes6,'频率/Hz');
box(axes6,'on');
hold(axes6,'all');
specgram(enhance,[],fsamp)

评分

1

查看全部评分

发表于 2008-4-21 12:37 | 显示全部楼层
原帖由 laughzha 于 2008-4-21 10:36 发表
昨天刚画了一个相关程序 整体贴下来给你:修改红色部分就可以,是按百分比设置的,0.08是8%的意思
figure1=figure('Units', 'Pixels', 'Position', [200 200 700 500]);
axes1 = axes('Position',[0.08 0.73 0.38 0.2 ...


您好,运行时出现以下错误:
??? Undefined function or variable 'xtime'.
Error in ==> figure_forum at 3
axis(axes1,[0 xtime(end) -0.5 0.5]);


方便的话把xtime也帖出来,OK?
发表于 2008-4-21 17:58 | 显示全部楼层
原帖由 ch_j1985 于 2008-4-21 12:37 发表


您好,运行时出现以下错误:
??? Undefined function or variable 'xtime'.
Error in ==> figure_forum at 3
axis(axes1,[0 xtime(end) -0.5 0.5]);

方便的话把xtime也帖出来,OK?


axis是设置坐标范围.麻烦你看一下帮助文件.help axis
你应该能看出xtime 是横坐标,你的横坐标是什么它就是什么
matlab也可以自动设置坐标范围,你可以把这行去掉.

[ 本帖最后由 laughzha 于 2008-4-21 17:59 编辑 ]
发表于 2008-4-21 19:12 | 显示全部楼层
原帖由 laughzha 于 2008-4-21 17:58 发表


axis是设置坐标范围.麻烦你看一下帮助文件.help axis
你应该能看出xtime 是横坐标,你的横坐标是什么它就是什么
matlab也可以自动设置坐标范围,你可以把这行去掉.


希望以后能够与大家一起分享完整的程序和效果图,这样就可以方便大家判断此帖是不是自己想要的帖子
发表于 2008-5-27 11:12 | 显示全部楼层

回复 3楼 的帖子

个人觉得你给的程序真的很不完整
但你热心帮人的态度是值得喝采的
非常同意6楼ch_j1985的意见
发表于 2008-5-27 17:06 | 显示全部楼层
经过修改,3楼的代码实现的功能如下:
figure1=figure('Units', 'Pixels', 'Position', [200 200 700 500],'color',[1,1,1]);
%axes1 = axes('Position',[0.08 0.73 0.38 0.1],'Parent',figure1);
axes1 = axes('Position',[0.08 0.73 0.2 0.25],'Parent',figure1);
axis(axes1,[0 1 0 1]);
xlabel(axes1,'t/s');
ylabel(axes1,'幅度');
box(axes1,'on');
hold(axes1,'all');
plot([0,1],[0,1]);
%axes2 = axes('Position',[0.58 0.73 0.38 0.1],'Parent',figure1);
axes2 = axes('Position',[0.58 0.73 0.2 0.25],'Parent',figure1);
axis(axes2,[0 1 0 1]);
xlabel(axes2,'t/s');
ylabel(axes2,'频率/Hz');
box(axes2,'on');
hold(axes2,'all');
plot([0,1],[0,1]);
%axes3 = axes('Position',[0.08 0.40 0.38 0.1],'Parent',figure1);
axes3 = axes('Position',[0.08 0.40 0.2 0.25],'Parent',figure1);
axis(axes3,[0 1 0 1]);
xlabel(axes3,'t/s');
ylabel(axes3,'幅度');
box(axes3,'on');
hold(axes3,'all');
plot([0,1],[0,1]);
%axes4 = axes('Position',[0.58 0.40 0.38 0.1],'Parent',figure1);
axes4 = axes('Position',[0.58 0.40 0.2 0.25],'Parent',figure1);
axis(axes4,[0 1 0 1]);
xlabel(axes4,'t/s');
ylabel(axes4,'频率/Hz');
box(axes4,'on');
hold(axes4,'all');
plot([0,1],[0,1]);
%axes5 = axes('Position',[0.08 0.07 0.38 0.1],'Parent',figure1);
axes5 = axes('Position',[0.08 0.07 0.2 0.25],'Parent',figure1);
axis(axes5,[0 1 0 1]);
xlabel(axes5,'t/s');
ylabel(axes5,'幅度');
box(axes5,'on');
hold(axes5,'all');
plot([0,1],[0,1]);
%axes6 = axes('Position',[0.58 0.07 0.38 0.1],'Parent',figure1);
axes6 = axes('Position',[0.58 0.07 0.2 0.25],'Parent',figure1);
axis(axes6,[0 1 0 1]);
xlabel(axes6,'t/s');
ylabel(axes6,'频率/Hz');
box(axes6,'on');
hold(axes6,'all');
plot([0,1],[0,1]);

[ 本帖最后由 ch_j1985 于 2008-5-27 17:07 编辑 ]

红色的代码绘制的图

红色的代码绘制的图

蓝色的代码绘制的图

蓝色的代码绘制的图

评分

1

查看全部评分

发表于 2012-6-17 10:07 | 显示全部楼层
很不错哦。

点评

反对: 5.0
反对: 5
  发表于 2012-6-17 10:42
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-1 17:15 , Processed in 0.090849 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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