图表中有超过100个节点,我在图中丢失了matlab图的层次顺序,并且不知道究竟是什么遗漏或错误。
以下是包含100个节点的图表示例,并且所有内容都是必需的。
NodeNum = 100;
s = [];
t= [];
for i = 2:NodeNum
t=[t,i];
end
for j=2:NodeNum/2
s=[s,j];
s=[s,j];
end
s=[1,s];
p=graph(s,t);
plot(p)
但是一旦节点数超过一百个;
NodeNum = 102;
s = [];
t= [];
for i = 2:NodeNum
t=[t,i];
end
for j=2:NodeNum/2
s=[s,j];
s=[s,j];
end
s=[1,s];
p=graph(s,t);
plot(p)
看起来像这里;
我可以针对任意数量的节点解决此问题吗?
答案 0 :(得分:2)
我认为问题的原因是如果你没有明确地为命令plot
指定绘制布局选项的图形,MATLAB会选择默认的绘图布局(参见documentation)。我相信为您的图表选择的默认布局选项是'subspace'
。但是,它具有不同的行为,具体取决于图中节点的数量是高于还是低于100(这在文档中简要提到,但我没有找到详细的解释)。
我认为解决此问题的最佳方法是使用'layered'
布局,例如plot(p,'Layout','layered')
。
如果您还想添加节点标签(如原始图表中所示),则可以添加选项NodeLabel
,例如plot(p,'Layout','layered', 'NodeLabel', 1:102);