这是我第一次在stackoverflow上发布内容,所以如果帖子不是最高质量,请原谅。
我试图在MATLAB中创建一个以圆形排列的互连节点的图形,我想标记每个节点(例如,1 2 3等)。当我将此示例代码用于"旋转"注释掉(最后一行),我得到了严重对齐的文字标签。如何让他们从节点图中等距放置而不必旋转文本?谢谢大家! (我附上了代码生成的图。)
%# 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))
答案 0 :(得分:0)
我认为问题是你的文字是左对齐的。您将文本框放在圆周围的所有点加上一些径向偏移。这会导致文本标签与左对齐偏离中心。如果将文本对齐方式更改为中心,则可以缓解此问题。
以下是您可以用来实现所需内容的代码编辑示例。注意,我也增加了径向偏移量。
%# show node labels
h = text(xy(:,1).*1.08, xy(:,2).*1.08, txt, 'FontSize',8);
set(h, {'HorizontalAlignment'},{'center'})