子图自动对齐方法

54次观看(过去30天)
giacomo labbri
giacomo labbri 2021年3月5日
评论道: giacomo labbri2021年3月7日
你好,
我想知道是否有一种简单的方法在图中对齐副图。这是我的问题。
我有一个带有彩色条的副图(在图的右侧)和一个没有彩色条但有两个y轴和相对标签的副图。我想要对齐的情节(意味着两个子情节的x值应该在相同的水平位置)。我发现实现这一目标的唯一方法便是思考支线情节的“位置”选项。如:
次要情节(4、2、6、“位置”, [0.095 0.1 0.81 0.1428])
但这个解决方案取决于数字本身的大小,在屏幕上,数字开始绘图(至少这是我的猜测,因为我得到不同的结果依赖于屏幕matlab绘图,如果我最大化的数字或不)。
问题的最小工作示例:
C = [0 2 4 6;8 10 12 14;16 18 20 22];
数字
次要情节(2,1,1)
显示亮度图像(C)
colorbar
次要情节(2,1,2)
持有
yyaxis
情节(C (:));ylabel (“C”
yyaxis正确的
情节(- c (:));ylabel (“c”
实例问题输出
任何建议都很感激!
4评论
giacomo labbri
giacomo labbri 2021年3月7日
只是为了记录,即使注释linkaxes行,我仍然得到相同的结果。但你的答案(见下文)做工作,所以谢谢!

登录发表评论。

接受的答案

亚当Danz
亚当Danz 2021年3月5日
编辑:亚当Danz 2021年3月5日
方法1:添加色条后,将所有轴的大小相等
不带颜色条的轴的大小将被设置为带颜色条的轴的大小。
%创建演示
Ax = gobjects(2,3);
I = 1:5
Ax (i) = subplot(3,2,i);
显示亮度图像(ax (i),兰德(100、1000))
colorbar (ax (i))
结束
Ax (end) = subplot(3,2,6);
情节(ax(结束)、1:1000(1:1000)。*兰德(1000)* 2)
设置所有轴的宽度和高度为最小宽度和高度
allAxPos =顶点(ax.Position);
allAxPos (:, 3:4) = min (allAxPos(:, 3:4)。*的(元素个数(ax), 1);
集(ax, {“位置”}, mat2cell (allAxPos的(元素个数(ax), 1), 4))
方法二:恢复轴线位置,设置锁骨位置
在添加颜色条之前,坐标轴保持其原始大小。调整颜色条的位置和宽度。
函数addOutsideColorbar (ax)
pos = ax.位置;
Cb = colorbar(ax,“EastOutside”);
斧子。位置= pos;
cb.Position(1) = sum(ax.Position([1,3]))+.01;
cb.Position(3) = cb.Position(3).*.5;
结束
演示
Ax = gobjects(2,3);
I = 1:5
Ax (i) = subplot(3,2,i);
显示亮度图像(ax (i),兰德(100、1000))
addOutsideColorbar (ax (i))
结束
Ax (end) = subplot(3,2,6);
情节(ax(结束)、1:1000(1:1000)。*兰德(1000)* 2)
方法3:使用平铺布局
Ax = gobjects(2,3);
Tlo = tiledlayout(3,2);
I = 1:5
Ax (i) = nexttile(tlo);
显示亮度图像(ax (i),兰德(100、1000))
colorbar (ax (i))
结束
Ax (end) = nexttile(tlo);
情节(ax(结束)、1:1000(1:1000)。*兰德(1000)* 2)

更多答案(0)

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!