图片缩略图

tight_subplot(NH,NW,间隙,marg_h,marg_w)

by版本1.1.0.0 (2.03 KB) 佩卡Kumpulainen
填充图中用轴副区与所述轴之间容易调整余量和差距。

440下载

更新2016年3月3日

查看许可协议

编者按:该文件被选为中央MATLAB本周精选

子图往往会在坐标轴周围留下大量的空白。Tight_subplot允许调整轴之间的间距以及轴周围的边距。
例如:
[ha, pos] = tight_subplot(3,2,[])。01 . 03]、[。1 . 01],[。01 . 01])
对于II = 1:6;轴(ha (ii));(二)情节(randn(10日);结束
集(哈(1:4),‘XTickLabel’,”);集(哈,‘YTickLabel’,”)

引用作为

佩卡Kumpulainen(2020年)。tight_subplot(NH,NW,间隙,marg_h,marg_w)(//www.tatmou.com/matlabcentral/fileexchange/27991-tight_subplot-nh-nw-gap-marg_h-marg_w), MATLAB中央文件交换。检索

评论和评分(125)

亲爱的开发,

好工作!这是一个很好的函数,当您可以绘制几个图以进行更好的比较时。

谢谢柠多为你的分享!

Aleix巴黎

王勇

约拿珍珠

这是惊人的!MATLAB给出了警告“一个循环中的轴(h)可能会变慢”。Is there a way to avoid having to call axes?

嗯…它有21个次要情节,似乎有一些麻烦。请尝试这个代码:

公顷= tight_subplot(3,7,[01 0.03],[1 0.01],[01 0.01])
for ii = 1:21;轴(ha (ii));(二)情节(randn(10日);结束
集(哈(1:4),‘XTickLabel’,”);集(哈,‘YTickLabel’,”)

SkliUoD

彼得·蔡

约翰

亲爱的Pekka,假设一个经典的子情节图有3行和2列,你如何设置一个排序:
副区(3,2,[1:2])????

不可能将一个图形跨越到两个垂直或水平的连续面板上吗?

非常感谢您的意见,显然你不错的贡献。

Vadym Faryna

少林

兴旺勇

正是我需要的,非常感谢。

工作就像一个魅力!感谢分享

新航谢

sezen onol

颖轩王

ant0nis

Siyao胡

易于使用!问:当面板靠得很近时,我的一些副图不会显示出来(例如,gap = 0),我可以通过增加边缘的间隙或边距来解决这个问题。这是一个可以解决的bug吗?或者有其他人经历过并且知道一个简单快速的解决方案吗?

赵Honglong

非常感谢你分享这个功能!

市文施

请注意,有时TickLabels开始使用此功能删除,如果你想印有可靠使用例如export_fig,你必须调用:
集(GCA, 'XTickLabel',cellstr(num2str(GET(GCA, 'XTICK')')))
集(GCA, 'YTickLabel',cellstr(num2str(GET(GCA, 'YTick')')))
这似乎是不会引起问题与错误的唯一的解决方法!ticklabels。小心!

王Mengling

伟大的功能!非常感谢!

zy汉

做得好。

绍兴黄

赛义德米

谢谢你的帮助的脚本。有什么办法增加一个共同suplabel对所有的X和使用该Y轴?使用其他应用做出额外的空间。

你好。我是一个新的学习者。我需要精简我的次要情节。请帮助我与我的代码附件如下。我不知道如何在我的代码中使用上面的函数。请帮助我。

%显示原始图像
图像= imread( 'boardday.jpg');
%阅读彩色图像,并将其转换为灰度图像
myimage = rgb2gray(图片);
图;
次要情节(2,1,1);
imshow(图像);标题({ '原始'; '图像'});
副区(2,1,2);
imshow(模板);标题({“灰度”;“图像”});

非常有用的功能!恭喜。

鲍勃达

这是非常简洁的计算非常有用。

伟大的工具!非常感谢你

天兰

伟大的功能。谢谢!

亚当Danz

这种方法非常直观,易于使用。我只希望XTickLabel和YTickLabel创建轴后未清空。为了重新穿上,你应该把这种各轴:

集(h,“XTickLabelMode”,“汽车”)
集(H, 'YTickLabelMode', '自动')

廖昌永他

乔治·Wiora

老板灵光

MERCI倒VOTRE的贡献!;)

这是一个极好的功能!非常感谢您为您的文章!:-)

@Megan福勒
您可以使用set和get的组合。这对我来说很有效。
originalSize = get(gca, 'Position');
cb = colorbar;
集(gca,“位置”,originalSize);

谢谢!

这是非常有帮助!有一个问题我在是如何将彩条添加到一个插曲没有在图搞砸了对齐与所有其他面板不清楚 - 是否有此修复程序?

谢谢。PS:该 ';'三个如果线后面是不必要的。

如果numel(间隙)== 1;
...

bravomuse

真的很有用,谢谢!

Mr.Leung

非常感谢作者提供的函数命令,非常有用!(非常感谢对你的这段代码中,它对我很有帮助!)

这使得我的论文很好地完成了。我用过几百次了,非常欣赏!现在我使用这个函数来生成一些不同的图,这里有一个问题:是否可以指定两个子图的底部占用的图形区域比顶部少?也就是说,上面的图高度是500像素,下面的是200像素?欢呼。

摩卡

ABehrooz

grega

不错,但我不得不添加移位参数从被截断(按下面这里的“偏见”参数是一个新的2元向量输入ARG和刚刚添加到位置描述如下停在左边我的刻度标记

'位置',[PX +偏置(2)PY +偏压(1)AXW AXH],...

我想让它完全自动居中会很好(不是说我不知道我是怎么想的),但我真的很高兴你写了这个。谢谢。

这个函数不遵循subplot的默认语法,因为这不是subplot,而是另一个函数。第三个输入参数是轴之间的间隙。不是轴的数字顺序设置为'当前税'的数字,如在附图。有关输入参数的说明,请参阅帮助。
在Fex中似乎有一个古老的版本,我更新了一个mre的最新版本,这使它更容易顶部生活与彩条和其他功能,修改现有的轴的位置。

SL

关于这里的插曲问题的探讨http://stackoverflow.com/q/35770961/54964其中彩条与一个例子和subplot的第三参数进行了讨论。

SL

不遵循subplot的默认语法,省略了第三个参数。失败与彩色的。

SL

桑子

完美!谢谢你!

K E

pingfanyu

未定义的函数或变量“tightfig”。
我为什么会遇到这个问题,我该怎么做?

这是我遇到过的最有用的FEX贡献之一。谢谢你的努力!

优秀的功能!
但我有一个问题。当我绘制奇数个子图时,比如7个排列为4*2的图,总是有一个空白图,即使我删除了ha中的最后一个值,也无法删除它。
有人知道怎么修吗?

*通过设置轴,XColor和YColorthe的最后一个情节不可见的问题固定。

次要情节(ha (8));集(gca,‘颜色’,‘没有’,‘XColor’,‘没有’,‘YColor’,‘没有’);

优秀的功能。我没问题。

Tero

优秀的功能,谢谢。我遗漏的一件事是:是否有一种方法来连接不同的副情节,就像副情节(4,2,[1,3,5])?

哈迪

培特

tnx,伟大的工作

丽娜

这个文件真的帮助了我!但是我有一个问题。我想在每个子图中设置x,y轴的固定极限。例如:(axis([0 700 -500 10000]))。我试着去做,但没有结果。关于如何做到这一点,有什么建议吗?

贝丝

除了内部空白之外,它还提供了可变的外部空白,这一点很好。我希望它能够支持非对称图,即一个金宝app面板跨越多个行/列。

尼斯,非常方便,虽然在默认情况下,我更喜欢我的刻度标记上留下......别人谁想要这也可能只是国防部的文件..只是在内部循环中删除它设置勾......即

对于ix = 1:Nw
2 = 2 + 1;
ha(ii) =坐标轴(“单位”、“规格化”、……
'位置',[PX PY AXW AXH]);
PX = PX + AXW +间隙(2);
结束

托马斯

有用,做它声称的

乔凡尼

这是一个很棒的脚本。我遇到了一个让我的蜱虫消失的错误。这是一个示例:

图( '位置',[100 100 1000 600])
公顷= tight_subplot(1,3,,,[02,0.02。] [12,0.08。] [1,0.02。]);
用于=公顷”
保持(一,“全部”)
箱(一,“上”)
XLIM(A,[1 10])
ylim(A,[ - 90 10])
结束
集(公顷, '的XScale', '记录', '字体大小',fontSize的, 'ytick', - 100:10:20, 'yticklabel',[] '上', 'yminortick',)
集(ha (1) yticklabel, 100:10:20)
1%
散射(公顷(1),x11,10 *日志10(Y11),30,[0 0.5 0], 'X');
散射(公顷(1),x12,10 *日志10(Y12),30,[0 0 1], '填充');
2%
散射(HA(2),x21,10 *日志10(Y21),30,[0 0.5 0], 'X');
散射(HA(2),x22,10 *日志10(Y22),30,[0 0 1], '填充');
3%
散射(ha (3) x31 10 * log10 (y31)、30日(0 5 0),“x”);
散射(ha (3) x32 10 * log10 (y32)、30日(0 0 1),“填满”);

我预计xticks会在.1、1和10点出现,但在我的系统中,它们完全消失了。如果我试着手动把它们加起来对数尺度就会搞砸,所以肯定还有别的办法。我用的是Matlab R2012a。
谢谢!

马林

非常好的文件,谢谢。对于Matlab的新用户来说,为了更好地学习如何使用这个文件,可以在注释中添加一个额外的示例。

我有但如果我可以问他们这里有两个问题...

1.怎么在y轴上加数字?(当然只在最右边)

2.我如何写x和y标签?(仅适用于所有轴)

提前谢谢你。

alexpapi

非常好,需要像这样的东西,它很容易使用。

江民张

我不能做任何事情,但给一个五星级的!绝对比MathWorks公司更聪明!

Aditya

嘿,

伟大的功能。遗憾的是我碰到它,我花后过多的时间去写一个类似的功能。正如一些人上面说的,我想要的功能,多行/列跨越次要情节的工作。所以我包含在以下功能的能力:

//www.tatmou.com/matlabcentral/fileexchange/35464-spaceplots

我只是觉得它可能对一些人有用。

卡尔

我第二什么丹说。跨越多列/行还是很有用的。例如:
哈= tight_subplot (2, 2, 0.1, 0.1, 0.1)
轴(ha(1));情节(x1, y1);
轴(ha(2));情节(x2, y2);
轴(公顷([3 4]))情节(X3,Y3);

拉维

非常感谢你的剧本。

做得好。将是不错的能有次要情节填充uipanel而不是整个图(带GUI内不玩)。

卡洛斯Baiz

尼斯功能,一个是我来依靠。这将是巨大的,如果轴可以跨越多个列/行,你可以使用内置的插曲做。否则,伟大的。

很抱歉 - 不知道该评级意味着提交提交。救了我大量的时间,在其产生通过GIS图形功能优良。不知道为什么插曲命令有这个问题,但由于解决了!

科斯去

优秀的小脚本!非常感谢!

不过,我有一个建议:与其说“axis (ha(ii))”,还不如说“subplot(ha(ii);”。在并排设置两个图时,使用坐标轴给了我不可预知的行为。我会(几乎总是)绘制右边的坐标轴,不管我多么频繁地尝试给出“坐标轴(ha(1))”命令(或者“坐标轴(ha(2))”)。用附图解决了这个问题。不知道为什么…

托马斯

良好的工作。我需要创建多个地块与环内的几个子图。空地块作为结果和Matlab遇到了麻烦,被打破了,直到我重新启动它。即使是图(1:100,兰特(1,100))将返回一个空的身影。无论如何,我返回的轴位置矩阵“HA”的值,并除去内部轴命令。当我准备在我正在创建一个特定的插曲位置我叫的人物之一绘制:

图(h4);
副区( '位置',HA4(FC4).POS);P =情节(1:100,兰特(1,100));

其中HA4(FC4).POS对应于带手柄“H4”图中的副区fc4'th位置。

亚历山大

谢谢你的贡献。我非常喜欢它。
在我看来,输入检查应该是这样的:
如果nargin <3 ||的isEmpty(间隙);间隙= 0.02;结束
如果nargin<4 ||为空(marg_h);marg_h = . 05;结束
如果nargin <5 ||的isEmpty(marg_w);marg_w = 0.05;结束

所以,你可以修改marg_w,并采取默认的其他参数。
tight_subplot (nrows ncolumns, [] [], [。1 . 05]);

我不知道mathworks对于他们的子情节例程是怎么想的……这样好多了

更新

1.1.0.0

返回创建的axis对象的位置。允许重置位置后,一些标准的功能,其中重新定位现有的axxes(例如。colorbar)

MATLAB版本兼容性
创建了R2010a版本
与任何版本兼容
平台的兼容性
窗户 macOS Linux