首页 > 解决方案 > 在绘图中的两条垂直线之间对齐文本

问题描述

如何text()在指定的分隔符之间直接使用(或更合适的函数)居中文本?基本上,我只想在 中使用xandy参数text(),但使用文本的“中心”。

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

%% 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)

在此处输入图像描述

标签: matlabmatlab-figure

解决方案


相对于中心的文本对齐

使用该'HorizontalAlignment'属性并将其设置为'center'可能有助于实现由垂直线划分的部分之间的对齐。在这里,我将每个文本注释初始化为变量Text_1并分别Text_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 运行


推荐阅读