【发布时间】:2016-03-03 15:33:37
【问题描述】:
Matlab 2015b 或 Matlab 2016a。
我想让网格线穿过图之间的子图间距,以便更好地水平评估两张图片。 但是,我在右下角的两个数字之间有一个小间隙,因为这导致数字不对齐
差距是因为右下角的10^4。
我也想让水平线穿过两个数字之间的间距,但在解决间隙问题之前我不能这样做。
按照关于线程的答案here 中的描述完成相对对齐的代码Matlab 中带有颜色条和子图第三个参数的紧子图?
data=randi(513,513);
D=mat2gray(pdist(data, 'correlation'));
% Set normalized outer position (x,y,width,height)
ax1=axes('OuterPosition', [0 0.5 0.5 0.5]);
plot(D, 'Parent', ax1);
xlim([0 size(D,2)]);
set(cbar1, 'Visible', 'off')
title('Signal');
ax2=axes('OuterPosition', [0.51 0.5 0.5 0.5]);
plot(D, 'Parent', ax2);
set(ax2, 'XLim', [0, size(D,1)])
axis(ax2, 'square');
title('Corr pdist');
Suever 的answer 的输出
我尝试将sprintf('%.2g', x) 中的两(2)个变大变小,但未成功
ax2 = axes('OuterPosition', [0.51 0.5 0.5 0.5]);
plot(D, 'Parent', ax2);
set(ax2, 'XLim', [0, size(D,1)])
axis(ax2, 'square');
title('Corr pdist');
cbar2 = colorbar(); % ax2 not needed here in brackets
set(ax2, 'XLim', [0 size(D,2)]);
set(cbar2, 'Visible', 'off')
grid minor;
% https://stackoverflow.com/a/35776785/54964
xticks = get(ax2, 'xtick');
labels = arrayfun(@(x)sprintf('%.2g', x), xticks, 'uniform', 0);
set(ax2, 'xticklabels', labels);
它给了
这些刻度不是 XMinorTicks 而是简单的刻度(在图片中标记错误)。 它们是 x 轴上某些点的零点。当 x 轴变大时,MATLAB 会自动添加新的 xtick 标记,但没有完整的标签。 我认为那里有另一个符号比零更好。对于不完整的 xticks 标签,你怎么能有其他标记而不是零?
如何将 10^4 与第二个图中的最后一个数字对齐?
【问题讨论】:
-
你可能做不到。您可以考虑使用自定义轴刻度标签,这样 x10^4 就不会出现。
-
哪个版本的 Matlab?这听起来很傻,但我认为 Mathworks 在 14a 版中更改了显示引擎。对我来说(15a 版)子图自对齐
-
不使用
axes('OuterPosition'...可以只使用子图吗? -
@Matt 去看看他的其他帖子。这就像一个连续的问题...stackoverflow.com/questions/35770961/…
标签: matlab