matlab - 在绘图中的两条垂直线之间对齐文本
问题描述
如何text()
在指定的分隔符之间直接使用(或更合适的函数)居中文本?基本上,我只想在 中使用x
andy
参数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)
解决方案
相对于中心的文本对齐
使用该'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 运行
推荐阅读
- javascript - 我的 JQuery 循环运行。未捕获的 RangeError:超出最大调用堆栈大小
- c++ - 编译 C++ 程序时出错:错误:在 '>' 标记之前预期的 unqualified-id
- rust - 为什么当我用一个新值替换它时,Rust 编译器会抱怨我使用了一个移动的值?
- javascript - 当我尝试导入某些 JS 文件时出现“找不到模块”错误
- regex - 正则表达式后视中的可选空格
- r - 在 Rshiny 中绘制某些值
- soap - 如何让wsdl符合soap输入
- python - 没有名为“分类”的模块
- amazon-web-services - 为什么 boto3.client("ecs").describe_tasks(...) 并不总是有 stopCode?
- spartacus-storefront - 错误类型错误:无法读取未定义的属性“__source”