簡體   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