在绘图中的两条垂直线之间对齐文本

Align text between two vertical lines in plot

如何使用 text()(或任何更合适的函数)将文本直接置于指定的间隔符之间?基本上,我只想在 text() 中使用 xy 参数,但使用文本的 'center'。

我试过了:附加空格不起作用,基于字符数的移位不一致,文档没有提到任何关于将字符串居中对齐的内容。

%% create figure
x=[2 5]; %spacer var
figure; hold on;
axis([0 10 0 10])

%create lines based on spacer var
line([x(1) x(1)],ylim)
line([x(2) x(2)],ylim)

%silly formatting
grid on
axis square
xticks(0:10); yticks(0:10);
set(findall(gcf,'type','line'),'linewidth',3)

%generate text between vertical lines
y = ylim; %get ylimits
text(mean([0 x(1)]),y(2)*.8,'Label_1','FontSize',10)
text(mean([x(1) x(2)]),y(2)*.8,'Label_2','FontSize',10)

文本居中对齐

使用 'HorizontalAlignment' 属性 并将其设置为 'center' 可能有助于实现由垂直线划分的部分之间的对齐。这里我将每个文本注释初始化为变量 Text_1Text_2 并分别设置它们的 'HorizontalAlignment' 属性。

代码片段:

Text_1 = text(mean([0 x(1)]),y(2)*.8,'Label_1','FontSize',10);
Text_2 = text(mean([x(1) x(2)]),y(2)*.8,'Label_2','FontSize',10);

set(Text_1,'HorizontalAlignment','center');
set(Text_2,'HorizontalAlignment','center');

完整脚本:

%% create figure
x=[2 5]; %spacer var
figure; hold on;
axis([0 10 0 10])

%create lines based on spacer var
line([x(1) x(1)],ylim)
line([x(2) x(2)],ylim)

%silly formatting
grid on
axis square
xticks(0:10); yticks(0:10);
set(findall(gcf,'type','line'),'linewidth',3)

%generate text between vertical lines
y = ylim; %get ylimits
Text_1 = text(mean([0 x(1)]),y(2)*.8,'Label_1','FontSize',10);
Text_2 = text(mean([x(1) x(2)]),y(2)*.8,'Label_2','FontSize',10);

set(Text_1,'HorizontalAlignment','center');
set(Text_2,'HorizontalAlignment','center');

运行 使用 MATLAB R2019b