MATLAB:为圆形打印创建以圆形为中心的文本标签

MATLAB:为圆形打印创建以圆形为中心的文本标签,matlab,plot,text,placement,Matlab,Plot,Text,Placement,这是我第一次在stackoverflow上发布一些东西,如果这篇文章质量不高,请原谅 我试图在MATLAB中绘制一个图,其中一些互连节点排列成一个圆圈,我想标记这些节点中的每一个,例如,1、2、3等等。。当我将这个示例代码与最后一行注释掉的旋转一起使用时,我得到了对齐不良的文本标签。如何使它们与节点图等距放置,而不必旋转文本?提前谢谢大家!我附上代码生成的图形 %# 60-by-60 sparse adjacency matrix A = bucky(); N = length(A);![ent

这是我第一次在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))

我认为问题在于你的文本是左对齐的。将文本框放置在圆周围的所有点加上一些径向偏移。这会导致文本标签显示为左对齐偏离中心。如果将文字对齐方式更改为居中,则会缓解此问题

下面是一个编辑代码的示例,您可以使用它来实现所需的功能。注意,我还稍微增加了径向偏移

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

非常感谢您的回复。我也试过,正如你所说,它缓解了问题,但并没有完全解决问题。如果我使用径向偏移为1.01的代码行,这一点就很明显了。也许还有其他建议?如果你尝试seth,{'edgecolor'},{'black'},你会对文本框有更多的了解。当径向乘数为1.0时,我觉得它相当居中。我不太清楚情况如何。我想你是对的:it’非常感谢你的帮助!