Matlab图中的分层次序失败,包含100多个节点

时间:2016-04-29 17:01:41

标签: matlab graph

图表中有超过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)

True hierarchical order

但是一旦节点数超过一百个;

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)

看起来像这里;

False configuration

我可以针对任意数量的节点解决此问题吗?

1 个答案:

答案 0 :(得分:2)

我认为问题的原因是如果你没有明确地为命令plot指定绘制布局选项的图形,MATLAB会选择默认的绘图布局(参见documentation)。我相信为您的图表选择的默认布局选项是'subspace'。但是,它具有不同的行为,具体取决于图中节点的数量是高于还是低于100(这在文档中简要提到,但我没有找到详细的解释)。

我认为解决此问题的最佳方法是使用'layered'布局,例如plot(p,'Layout','layered')

如果您还想添加节点标签(如原始图表中所示),则可以添加选项NodeLabel,例如plot(p,'Layout','layered', 'NodeLabel', 1:102);