繁体   English   中英

如何在networkx python包中明显地显示密集图?

[英]how can I visual a dense graph obviously in networkx python package?

我在python中有一个大型的,有向图,它是由NetworkX软件包制作的。 如何提高图形图像的清晰度?

下图显示了我的图表。 在此处输入图片说明

我可以根据您的大小为您推荐几种改善图形可视化的方法。


如果您想可视化一个大图(> 1000个节点),则可以阅读另一个答案中的一些技巧。 在您的情况下,我建议您将图形导入到大型矢量图片中:

 import networkx as nx import matplotlib.pyplot as plt fig = plt.figure(figsize=(40, 40)) G = nx.fast_gnp_random_graph(300, 0.02, seed=1337) nx.draw(G, node_size=30) plt.axis('equal') plt.show() fig.savefig('waka.svg') 

如果您的图形相对较小(<1000个节点),则可以使用图形布局。

最适合您的图形布局是默认的spring_layout 它有k参数来设置节点之间的最佳距离。 这是示例:

默认k值

import networkx as nx
import random
random.seed(1234)
G = nx.fast_gnp_random_graph(30, 0.4, seed=1337)
for i in range(20):
    G.add_edge(i + 40, random.randint(1, 30))
    G.add_edge(i + 40, random.randint(1, 30))
pos = nx.spring_layout(G, seed=4321)
nx.draw(G, pos=pos, node_size=30, node_color='red')

在此处输入图片说明

放大的k值

import networkx as nx
import random
random.seed(1234)
G = nx.fast_gnp_random_graph(30, 0.4, seed=1337)
for i in range(20):
    G.add_edge(i + 40, random.randint(1, 30))
    G.add_edge(i + 40, random.randint(1, 30))
pos = nx.spring_layout(G, seed=4321, k=2)
nx.draw(G, pos=pos, node_size=30, node_color='red')

在此处输入图片说明

如果需要高精度分析边缘,则可读性较低,但如果您更关心节点,则更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM