如何为我的networkx图指定确切的输出大小?

56 投票
3 回答
89422 浏览
提问于 2025-04-16 03:17

http://imgur.com/7wiRw.png

上面的图片是我现在的图形输出。不过,我还没能实现我想要的效果。我需要把图形输出得更大一些,这样每个节点和边就能更清楚地看到。

我试过用 nx.draw(G, node_size=size),但这只是让节点变大,并没有增加节点和边之间的距离。

3 个回答

3

你可以增大图表的大小,同时设置图像的清晰度(dpi)。如果把清晰度调低,节点就会分散得更开一些。

G = nx.Graph()
# Add edges
fig = plt.figure(1, figsize=(200, 80), dpi=60)
nx.draw(G, with_labels=True, font_weight='normal')
19

看起来你的网络结构有点“乱”,你可以试试不同的图形布局算法,看看哪种最适合你。

nx.draw(G)  
nx.draw_random(G)  
nx.draw_circular(G)  
nx.draw_spectral(G)  
nx.draw_spring(G)  

另外,如果你的节点太多(比如有几千个),可视化你的图形可能会变得很麻烦。

99

你可以试试用更小的节点或字体,或者用更大的画布。下面是一个同时做到这两点的方法:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.cycle_graph(80)
pos = nx.circular_layout(G)

# default
plt.figure(1)
nx.draw(G,pos)

# smaller nodes and fonts
plt.figure(2)
nx.draw(G,pos,node_size=60,font_size=8) 

# larger figure size
plt.figure(3,figsize=(12,12)) 
nx.draw(G,pos)
plt.show()

撰写回答