1

如何将 xlabel 的位置居中,使其位于图形的中间?使用 LaTeX 时,我希望 xlabel 的中心与标题的中心对齐

4

2 回答 2

1

xlabel函数创建一个string图形对象并将其设置为XLabel当前坐标区对象的属性。string您可以在调用时为此对象定义属性xlabelPosition您可以通过调整默认设置为 [0 0]的属性来调整字符串对象的中心位置。

首先你得到现在的位置(在绘制和使用之后xlabel):

vec_pos = get(get(gca, 'XLabel'), 'Position');

然后更新位置(例如用 -0.5 调整 x):

set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.5 0 0]);

就文档而言,默认情况下,这是在 x 轴的数据单元中完成的。在我看来,标签“时间(秒)”位于 0.13 秒(根据您的图)。让我们将它向左调整 0.008 秒到 0.122 秒(“猜测”)。

强制它为“数据”单位并调整为 0.008:

str_defaultUnits = get(get(gca, 'XLabel'), 'Units'); % copy this
set(get(gca, 'XLabel'), 'Units', 'data'); % change it
set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.008 0 0]); % adjust position
set(get(gca, 'XLabel'), 'Units', str_defaultUnits); % set it back as it was

另一方面:您试图实现的目标有些错误我会说:) 轴的标签不应强制与整个图形标题对齐。为什么要这样做?图形标题以整个图形为中心,而不仅仅是绘图区域。我担心它最终会看起来很奇怪。当然是你的选择。

于 2012-06-25T12:10:12.937 回答
1

您要执行的操作的细节取决于您的 matlab 打印设置和乳胶选项(例如标题 raggedright 或居中),但这至少应该将您的 xlabel 放在图形的中心,而不是轴的中心.

fh=figure;
ah=axes;
plot(ah,[2.0:10],[2:10])
xlh=xlabel(ah,'my xlabel');
drawnow;
xlh_pos=get(xlh,'position');
ah_pos=get(ah,'position');
x_lim=xlim;

xlh_pos_fig=0.5;%put it in the middle
xlh_pos(1)=(xlh_pos_fig - ah_pos(1))*(x_lim(2)-x_lim(1))/ah_pos(3)+x_lim(1);
set(xlh,'position',xlh_pos);
于 2012-12-20T13:51:06.303 回答