簡體   English   中英

networkx圖中間距節點的問題

[英]Issue with spacing nodes in networkx graph

我正在嘗試制作具有數百條邊的networkx圖:

def generate_network_graph(graph):
    visual_graph = networkx.Graph()
    for edge in graph.edges:
        visual_graph.add_edge(edge.actor.name, edge.movie.title)
    plt.figure(3, figsize=(30, 30))
    networkx.spring_layout(visual_graph, k=0.9, iterations=20)
    networkx.draw_spring(visual_graph)
    plt.show()

無論我似乎增加k多大,我的圖看起來都像聚簇的混亂:

在此處輸入圖片說明

我不確定還有什么其他辦法可以防止節點重疊。 我嘗試了0.0到5.0的k值范圍。 我考慮過減少節點的大小,但是我不確定這是否會使圖形的可讀性降低。 不僅如此,而且重新生成此圖需要很長時間,大約15分鍾。 我是否只是沒有為工作使用正確的圖形庫? 還是可以修改某些內容以使圖形更清晰。

從文檔中

k : float (default=None) Optimal distance between nodes. If None the distance is set to 1/sqrt(n) where n is the number of nodes. Increase this value to move nodes farther apart.

您可以嘗試以下方法:

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np

# Set an exemple graph
edge_list = [(1,2),(2,0),(2,4),(3,4)]
g = nx.Graph(edge_list)

# plot
pos = nx.spring_layout(g, k=0.3*1/np.sqrt(len(g.nodes())), iterations=20)
plt.figure(3, figsize=(30, 30))
nx.draw(g, pos=pos)
nx.draw_networkx_labels(g, pos=pos)
plt.show()

在這里k1/np.sqrt(len(g.nodes())) ,因此即使節點數增加,節點仍然可以很好地分離。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM