图像缩略图

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

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

445下载

更新2016年3月3日

查看许可协议

编者按:这个文件被选为MATLAB中心本周的挑选

插曲往往留下很多空的空间绕轴。Tight_subplot允许调整轴沿着页轴线之间的间距,以及。
例如:
[公顷,POS] = tight_subplot(3,2,[01 0.03],[1 0.01],[01 0.01])
for ii = 1:6;轴(ha (ii));(二)情节(randn(10日);结束
集(哈(1:4),‘XTickLabel’,”);集(哈,‘YTickLabel’,”)

引用作为

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

意见及评级(125)

亲爱的developper,

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

谢谢柠多为你的分享!

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

彼得·蔡

约翰

亲爱的佩卡,假设3行2个colums经典插曲的身影,你怎么能设置一个排序:
次要情节(3 2 [1:2])? ? ? ?

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

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

少林

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

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

谢死啊

sezen onol

Marc Fivaz

ant0nis

Siyao胡

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

趙轰垄

非常感谢您对这个功能的共享!

市文施

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

王梦龄

伟大的功能!非常感谢!

zy汉

做得好。

绍兴黄

赛义德米

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

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

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

非常有用的功能!恭喜。

鲍勃达

梦瑶冷

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

伟大的工具!非常感谢你

天兰

伟大的功能。谢谢!

亚当Danz

该方法直观、易于使用。我只是希望XTickLabel和YTickLabel在创建坐标轴后不是空的。要把它们放回去,你应该在每个轴上调用这个:

集(H, 'XTickLabelMode', '自动')
集(H, 'YTickLabelMode', '自动')

廖昌永他

Georg Wiora

谢谢你的贡献!,)

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

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

谢谢!

这很有帮助!我不清楚的一个问题是如何添加一个颜色条到一个副情节,而不搞砸与所有其他面板的对齐在图-有没有一个解决方案?

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

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

bravomuse

真的很有用,谢谢!

Mr.Leung

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

这真的让我的学位论文工作走到了一起很好。我已经使用了数百次,并且极为感激!现在有一个问题,我使用的功能,产生一些不同的情节:是有可能指定两个次要情节的底部占用比顶部的图形区域的少?即顶部情节将有,说在高度500个像素,底部200?干杯。

摩卡

ABehrooz

grega

很好,但是我不得不添加一个shift参数来阻止左边的刻度标签被截断(如下图所示,其中“bias”参数是一个新的2元素向量输入参数,只是添加到了位置上,如下图所示

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

我想这将是很好有它完全自动居中(不,我知道如何把我的头顶部),但我真的很高兴,你写了这个。谢谢。

此功能不遵循的次要情节的默认语法,因为这不是次要情节,但其他功能。第三输入参数是轴之间的间隙。不轴线到集作为图的“CurrentAxes”作为副区的数按序。见的输入参数描述的帮助。
似乎有在Fex的一个古老的版本,我更新了MRE最新版本,这使得更容易顶部现场与彩条等功能,其修改现有轴的位置。

SL

关于这里的插曲问题的探讨http://stackoverflow.com/q/35770961/54964其中讨论了用一个例子和副区的第三参数colorbars。

SL

不通过省略第三个参数遵循插曲的默认语法。与colorbars失败。

SL

完善!谢谢!

pingfanyu

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

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

卓越的功能!
但我有一个问题。当我绘制奇数个子图时,比如7个排列为4*2的图,总是有一个空白图,即使我删除了ha中的最后一个值,也无法删除它。
任何一个有任何想法解决它?

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

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

优秀的功能。我没问题。

Tero

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

哈迪

培特

TNX,伟大的工作

丽娜

这个文件真的帮了我!但是我有一个问题。我想设置x的固定的限制,Y轴在每个subplot.For例如:(轴([0 700 -500 10000]))我试图做,但没有结果。我怎么能做到这一点有什么建议?

贝丝

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

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

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

托马斯

加Haspel

有用的,做什么它声称

乔瓦尼

这是一个伟大的剧本。我遇到那个让我蜱消失的错误。下面是一个示例:

图('position',[100 100 1000 600])
哈= tight_subplot(1、3、[02, .02],[点。08],[1。02]);
用于=公顷”
持有(a,“所有”)
箱(一,“上”)
xlim (,。1 10])
ylim(A,[ - 90 10])
结束
集(哈,‘xscale’,‘日志’,“字形大小”,字形大小,ytick, 100:10:20, yticklabel, [],“yminortick”,“上”)
集(公顷(1)中, 'yticklabel', - 100:10:20)
1%
散射(公顷(1),x11,10 *日志10(Y11),30,[0 0.5 0], 'X');
散射(ha (1) x12 10 * log10(日元)、30日(0 0 1),“填满”);
2%
散射(ha (2) x21 10 * log10 (y21)、30日(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

凯文Claytor

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

江民张

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

Aditya

嘿,

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

//www.tianjin-qmedu.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。不知道为什么subplot命令有这个问题,但是感谢您解决它!

科斯去

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

不过,我有一个建议:与其说“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 ||为空(marg_w);marg_w = . 05;结束

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

我不知道什么MathWorks公司与他们的日常次要情节的思维......这是好得多

更新

1.1.0.0

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

MATLAB版本兼容性
创建了R2010a版本
兼容任何版本
平台的兼容性
视窗 苹果系统 Linux