Matlab图中的层次顺序失败,包含100个以上的节点。

3

当我在图形中绘制超过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)

这里看起来像是;

False configuration

我能为任意数量的节点解决这个问题吗?

1个回答

2
我认为问题的原因是,如果您没有显式地指定绘图布局选项给plot命令,MATLAB会选择一个默认的绘图布局(请参阅文档)。我认为为您的图形选择的默认布局选项是'subspace'。然而,它在图形中节点数目高于或低于100时具有不同的行为方式(这在文档中简要提到,但我没有找到详细的解释)。
我认为解决问题的最好方法是使用'layered'布局,例如:plot(p,'Layout','layered')
如果您还想添加节点标签(如您原始的绘图),可以添加NodeLabel选项,例如:plot(p,'Layout','layered', 'NodeLabel', 1:102);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接