在MATLAB中将xlabel定位

时间:2012-06-25 09:53:54

标签: matlab figure

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

就文档而言,默认情况下,这是在数据单元中完成的x轴。在我看来,标签“Time(s)”位于0.13s(根据你的图)。让我们将它调整到左边,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

另一个注意事项:你想要达到的目标有些错误我会说:)轴的标签不应该强制对齐整个数字标题。为什么这样?图标题以整个图形为中心,而不仅仅是绘图区域。我担心它最终会变得怪异。你选择的当然。

答案 1 :(得分: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);