Python networkx:始终绘制图形
我正在使用networkx绘制3D立方体、4D超立方体和5D超立方体 如何控制draw()函数的工作方式?我希望它们都以完全相同的角度、大小和标签出来Python networkx:始终绘制图形,python,networkx,Python,Networkx,我正在使用networkx绘制3D立方体、4D超立方体和5D超立方体 如何控制draw()函数的工作方式?我希望它们都以完全相同的角度、大小和标签出来 cnt = 0 for uniqHC in nx_hcl: plt.figure() nx.draw(uniqHC) plt.savefig("uniqHC_" + str(cnt)) plt.close() #nx.relabel_nodes(uniqHC, flatten) cnt += 1
cnt = 0
for uniqHC in nx_hcl:
plt.figure()
nx.draw(uniqHC)
plt.savefig("uniqHC_" + str(cnt))
plt.close()
#nx.relabel_nodes(uniqHC, flatten)
cnt += 1
正如你所看到的,第一个不错,第二个不是我想要的。很难理解和比较正在发生的事情。这只是3D的
该软件可以绘制超立方体,它们看起来很棒。我希望我的图表以相同的样式绘制。下面是我想要的3D手机壳的图片。我的标签上只有“000”、“001”就可以了。我试着变得聪明起来,从他们的超立方体开始,删除有向边并添加我的方向,但它随机扭曲了图形的形状,看起来和以前一样
HC = nx.hypercube_graph(3)
DHC = nx.convert.convert_to_directed(HC)
nx.draw(HC)
使用networkx中的spring布局方法可能无法获得想要的结果(一致的方向和间距)。这是默认值,也是调用draw()时发生的情况 如果您知道要将节点定位到的位置,可以像这样指定
In [1]: import networkx as nx
In [2]: G = nx.hypercube_graph(2)
In [3]: pos = nx.spring_layout(G)
In [4]: pos
Out[4]:
{(0, 0): array([ 0.67137792, 0.44182572]),
(0, 1): array([ 0.42261686, 1. ]),
(1, 0): array([ 0.24869904, 0. ]),
(1, 1): array([ 0. , 0.55858863])}
In [5]: pos[(0,0)]=(0,0)
In [6]: pos[(0,1)]=(0,1)
In [7]: pos[(1,0)]=(1,0)
In [8]: pos[(1,1)]=(1,1)
In [9]: nx.draw(G,pos)