【问题标题】:Align text between two vertical lines in plot在绘图中的两条垂直线之间对齐文本
【发布时间】:2021-01-06 14:24:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    相对于中心的文本对齐方式

    使用'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 运行

    【讨论】:

    • 太棒了 - 我错过了这个属性!感谢这个非常美观的答案,在图形生成后运行此代码线(我从答案中得到)是最小的变体。 set(findall(gcf,'type','text'),'HorizontalAlignment','center')
    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多