MatLab:为圆形打印创建圆形居中文字标签

oyt4ldly  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(284)

这是我第一次在Stackoverflow上发布一些东西,如果这个帖子质量不高,请原谅。
我正试图在MatLab中画一个图形,将一些相互连接的节点排列成一个圆圈,我想将这些节点标记为每个节点(例如,1、2、3等)。当我使用这个带有注解掉的“Rotation”(最后一行)的示例代码时,我得到的文本标签对齐得很差。我怎么做才能使它们与节点绘图等距离放置,而不必旋转文本?提前感谢大家!(我附上代码生成的图形)。

%# 60-by-60 sparse adjacency matrix
A = bucky();
N = length(A);![enter image description here][1]

%# x/y coordinates of nodes in a circular layout
r =  1;
theta = linspace(0,2*pi,N+1)'; theta(end) = [];
xy = r .* [cos(theta) sin(theta)];

%# labels of nodes
txt = cellstr(num2str((1:N)','%02d'));

%# show nodes and edges
figure(123)
line(xy(:,1), xy(:,2), 'LineStyle','none', ...
'Marker','.', 'MarkerSize',15, 'Color','g')
hold on
gplot(A, xy, 'b-')
axis([-1 1 -1 1]); axis equal off
hold off

%# show node labels
h = text(xy(:,1).*1.05, xy(:,2).*1.05, txt, 'FontSize',8);
%set(h, {'Rotation'},num2cell(theta*180/pi))
7d7tgy0s

7d7tgy0s1#

我认为问题是您的文本左对齐。您将文本框放在圆周围的所有点加上一些径向偏移量。这会导致文本标签以左对齐的方式偏离中心显示。如果您将文本对齐方式更改为居中,这将缓解此问题。
下面是一个代码编辑示例,您可以使用它来实现您想要的结果。注意,我也增加了一点径向偏移量。

%# show node labels
 h = text(xy(:,1).*1.08, xy(:,2).*1.08, txt, 'FontSize',8);
 set(h, {'HorizontalAlignment'},{'center'})

相关问题