子图倾向于在轴周围留下很多空的空间。TECICE_SUBPLOT允许调节轴之间的间距以及轴周围的边缘。
例如:
[ha,pos] = circe_subplot(3,2,[01 .03],[。01],[。01 .01])
对于II = 1:6;轴(ha (ii));(二)情节(randn(10日);结束
集(哈(1:4),‘XTickLabel’,”);集(哈,‘YTickLabel’,”)
Pekka Kumpulainen(2021年)。TECICE_SUBPLOT(NH,NW,GAP,MARG_H,MARG_W)(//www.tatmou.com/matlabcentral/fileexchange/27991-tight_subplot-nh-nw-gap-marg_h-marg_w),Matlab中央文件兑换。检索到.
这应该包括在描述中:
[ha,pos] = city_subplot(行,列,[vspace_between_plots hspace_between_plots],[bottom_margin top_margin],[left_margin right_margin]);
希望能帮助到你!
你是我的救星。
工作非常好!
嗨,我正在尝试重新排序matlab用于一个小块的区域绘图的颜色,而且我在尝试使用此函数拧紧我的子图之前我没有得到的集合功能。我需要添加什么,以使其工作?
>套(GCA,'ColorOrder',翻转大学家,'NextPlot','replateChildren')
谢谢!
非常有用!帮助我格式化我的论文的一些情节,由默认的副情节渲染非常小。
很好,很有用的!
我有一个2x1的子图我想让第二个子图的高是第一个子图高的1/3。副图之间的距离不应改变。这有可能吗?
亲爱的Developper,
好工作!这是一个很好的函数,您可以绘制几个图来更好地进行比较。
谢谢你的共享!
这是惊人的!MATLAB给出警告“称为轴(h)在一个循环中可以缓慢。”有没有办法避免调用坐标轴?
MMM ...用21个子彩杆,似乎有一些麻烦。请尝试以下代码:
ha = city_subplot(3,7,[01 .03],[。01],[。01 .01])
For ii = 1:21;轴(ha (ii));(二)情节(randn(10日);结束
集(哈(1:4),‘XTickLabel’,”);集(哈,‘YTickLabel’,”)
亲爱的Pekka,假设3行和2个核糖的经典子图形,您如何设置某种:
子图(3,2,[1:2])????
不可能把一个数字跨越到垂直或水平的两个连续的面板上吗?
非常感谢您的评论,显然是为了您的好贡献。
正是我需要的,非常感谢。
像魅力一样工作!感谢分享
易于使用!问:我的一些次要情节不会显示当面板是紧密的(例如,间隙= 0)。我可以通过增加间隙或沿边缘的边距来解决这个问题。这是一个可以解决的bug吗?或者其他人有过这样的经历,知道一个简单快速的解决方案吗?
非常感谢您与此功能共享!
请注意,有时划分的标签使用此功能删除,如果希望它们可靠地使用例如可靠地打印。export_fig,您必须打电话:
set(gca,'xticklabel',cellstr(num2str(get(gca,'xtick')'))))))
SET(GCA,'YTicklabel',CellStr(Num2str(GET(GCA,'YTick')')))))))
这似乎是唯一的解决方法,不会引起错误的问题!标签。小心!
伟大的功能!非常感谢!
做得好。
谢谢你的有用脚本。是否有任何方法可以使用此添加一个常用的x和y轴来添加一个常见的suplabel?使用其他应用程序提供额外的空间。
你好。我是一个新手。我得把次要情节精简一下。请帮助我与我的代码附上以下。我不明白我如何使用上面的函数与我的代码。请帮助我。
%显示原始图像
image = imread('boardday.jpg');
%读取彩色图像并将其转换为灰度级图像
myimage = rgb2gray(图像);
数字;
子图(2,1,1);
imshow(图片);标题({'原始';'图像'});
子图(2,1,2);
imshow(myimage);标题({'灰度';'图像'});
非常有用的功能!恭喜。
非常简洁的计算非常有用。
伟大的工具!非常感谢你
伟大的功能。谢谢!
这种方法直观且易于使用。我只希望XTicklabel和Yticklabel创建轴后不空。要将它们重新打开,您应该在每个轴上调用它:
设置(h,'xticklabelmode','auto')
设置(h,'yticklabelmode','auto')
Merci Pout Potre贡献!;)
这是一个很好的功能!非常感谢你的帖子!:-)
@megan fowler.
您可以使用set和get的组合。这对我来说很有效。
OriginalSize = get(gca,'位置');
cb = colorbar;
集(gca,“位置”,originalSize);
谢谢!
这非常有帮助!我不清楚的一个问题是如何将彩色杆添加到一个子图,而无需拧紧与图中所有其他面板的对齐 - 是此目的?
谢谢你。PS:';'在三个If-Line后面是不必要的。
如果磁性(间隙)== 1;
......
真的很有用,谢谢!
非常感谢作者提供的函数命令,非常有用!(非常感谢您的这个代码,对我很有帮助!)
这真的让我的论文工作很好地聚集在一起。我用过了数百次,欣赏它很大!现在一个问题现在我正在使用函数来生成一些不同的绘图:是否可以指定两个子图的底部比顶部占据了数字区域的底部?IE。顶部图会有500像素,高度和底部200?干杯。
很好,但我必须添加Shift参数,以阻止左侧的刻度标签(如下,在下面的“偏置”参数是一个新的2个元素向量输入arg并刚添加到该位置如下
“位置”,[PX + BIAS(2)PY +偏置(1)AXW AXH],......
我想完全自动居中(不是我知道偏望的顶部)很高兴,但我真的很高兴你写了这篇文章。谢谢。
此函数不遵循子图的默认语法,因为这不是子图,但另一个功能。第三个输入参数是轴之间的间隙。不是轴的数量,以设置为子图中的数字的“Currentax”。请参阅帮助以获取输入参数的描述。
似乎在FEX中是一个古代版本,我更新了一个MRE最近的版本,这使得彩色杆和其他功能更加容易实现顶部,这改变了现有轴的位置。
讨论这里的子图中的问题http://stackoverflow.com/q/35770961/54964讨论了具有示例和子图的第3个参数的Colorbars。
通过省略第三个参数,不遵循子图的默认语法。与Colorbars失败。
完美的!谢谢!
你可以在这里找到circlefig.m,//www.tatmou.com/matlabcentral/fileexchange/34055-tightfig.
未定义的功能或变量'cityfig'。
为什么我遇到这个问题,我该怎么办?
这是我遇到过的最有用的FEX贡献之一。谢谢你的努力!
优秀的功能!
但我有一个问题。当我绘制奇数个子图时,比如7个图排列成4*2,总是有一个空白图我不能删除,即使我删除了ha中的最后一个值。
任何人都有任何想法来解决它吗?
*问题修复了设置轴,XColor和YColorthe的最后一个plot不可见。
次要情节(ha (8));集(gca,‘颜色’,‘没有’,‘XColor’,‘没有’,‘YColor’,‘没有’);
优秀的功能。适合我。
优秀的功能,谢谢。我遗漏了一件事:是否存在连接不同副情节的方法,如副情节(4,2,[1,3,5])?
TNX,很棒的工作
这个文件真的帮助了我!但是我有一个问题。我想在每个子图中设置x,y轴的固定限制。例如:(轴([0 700-500 10000]))。我试图做到但没有结果。任何建议我如何这样做?
除了内部间隙之外,它还提供了可变的外部边界,这是很棒的。我希望它能够支持非对称绘图,即一金宝app个面板跨多个行/列。
很好,非常方便,但默认情况下,我更喜欢留下我的刻度标签......其他想要这可能只是mod文件。只需在内部循环中删除它,在那里它将其删除...即将删除......即
对于ix = 1:Nw
2 = 2 + 1;
ha(ii) =轴('Units','normalized',…
'位置',[px py axw axh]);
Px = PX + AXW + GAP(2);
结束
有用,并做了它所要求的
这是一个很棒的剧本。我正在遇到一个让我的蜱虫消失的错误。这是一个样本:
图(“位置”,[100 100 100 100 600])
ha = city_subplot(1,3,[。02,.02],[。12,.08],[。1,.02]);
对于a = ha'
持有(a,'全部')
盒子(a,'开')
XLIM(A,[。1 10])
ylim(a,[ - 90 10])
结束
set(ha,'xscale','log','fontsize',fontsize,'ytick', - 100:10:20,'yticklabel',[],'Yminortick','On')
SET(HA(1),'YTicklabel', - 100:10:20)
%1
散射(HA(1),x11,10 * log10(y11),30,[0 .5 0],'x');
散射(HA(1),X12,10 * log10(Y12),30,[0 0 1],'填充');
%2
散射(HA(2),x21,10 * log10(y21),30,[0 .5 0],'x');
散射(HA(2),X22,10 * log10(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标签?(仅适用于所有轴的)
先谢谢你。
非常好,需要这样的东西,而且很容易使用。
我什么也做不了,但是给了五星!绝对比MathWorks更聪明!
嘿,
伟大的功能。在我花费大部分时间写作类似的功能后,我遇到了它。正如有些人在上面所说,我希望使用多行/列跨越子图的功能。所以我包括以下功能中的功能:
http://www.mathwands.com/matlabcentral/fileexchange/35464-spaceplots.
只是以为它可能对一些有用。
我是丹说的。跨越多个列/行非常有用。例如:
哈= tight_subplot (2, 2, 0.1, 0.1, 0.1)
轴(ha(1));情节(x1, y1);
轴(HA(2));图(X2,Y2);
轴(HA([3 4]))图(X3,Y3);
非常感谢你的剧本。
做得好。很高兴能够让子图填充UIPanel而不是整个数字(不在GUI中播放)。
很好的功能,还有一个我来依靠。如果轴可能会使用内置子图可以执行多列/行,则会很好。否则,很棒。
oops - 不知道评级提交意味着提交。优秀的功能为我节省了大量的时间,必须通过GIS生成图形。没有clue为什么subplot命令有这个问题,但谢谢你解决它!
优秀的小脚本!非常感谢!
不过,我还是有一个建议:在这个例子中,与其说是“轴(ha(ii));”,不如说是“副情节(ha(ii));”使用坐标轴可以让我在同时设置两个情节时产生不可预测的行为。我(几乎总是)将坐标轴绘制在右边,无论我多少次尝试给出“坐标轴(ha(1))”命令(或者“坐标轴(ha(2))”)。用副图解决了这个问题。不知道为什么…
良好的工作。我需要在循环中创建具有多个子图的多个绘图。由于结果和Matlab在重新启动之前,Matlab遇到了空白地块。甚至绘图(1:100,rand(1,100))将返回一个空的数字。无论如何,我返回了轴位置矩阵“HA”的值,并删除了内部轴命令。当我准备在其中一个图中绘制我正在为我调用的特定子图层位置创建:
图(H4);
子图(“位置”,HA4(FC4).POS);p = plot(1:100,rand(1,100));
其中HA4(FC4).PO对应于具有手柄“H4”的图中的FC4'th子图位置。
谢谢你的贡献。我非常喜欢它。
在我看来,输入检查应该是这样的:
如果nargin <3 ||谬误(差距);GAP = .02;结束
如果nargin<4 || isempty(marg_h);marg_h = . 05;结束
如果nargin <5 ||isempty(marg_w);marg_w = .05;结束
因此,您可以修改MARG_W并为其他参数占用默认值。
city_subplot(nrows,ncolumns,[],[],[.1。05]);
我不知道Mathworks用子图案的思考是什么......这很好