簡體   English   中英

Networkx 圖和標簽

[英]Networkx graph and labels

我在理解 networkx 庫的工作原理和節點標簽方面遇到了一些麻煩。 假設我在 pandas dataframe 中有一個相關矩陣:

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

D = pd.DataFrame\
({'A': [1, 0.5, 0.1], 'B': [0.5, 1, 0.3], 'C': [0.1, 0.3, 1]}, index =  ['A', 'B', 'C'])

我現在想 plot 這個相關矩陣的簡單圖形表示(在這個例子中是一個三角形),然后為更大的相關矩陣/距離矩陣生成最小生成樹。

corr_graph = nx.from_pandas_adjacency(D)
pos = nx.spring_layout(corr_graph)
nx.draw_networkx_nodes(corr_graph ,pos=pos, label = ['A', 'B', 'C'])
nx.draw_networkx_edges(corr_graph ,pos=pos)
nx.draw_networkx_edge_labels(corr_graph , pos=pos)
plt.axis('off')
plt.show()

因此生成了圖形,每個邊上都有正確的標簽。 在節點上,我有自循環邊{'weight':1}但節點本身沒有標簽,我希望它們為 A、B 和 C,就像我最初的 dataframe 一樣,這樣我就可以識別它們。 我的另一個問題是如何刪除自循環邊緣標簽。

我想對最小生成樹做同樣的事情,但首先我只是想在簡單的圖表上做。

謝謝,

繪圖節點標簽

(內置功能):

nx.draw_networkx_labels(corr_graph, pos=pos)

刪除自循環:

方法一:

將對角線設置為零,然后創建圖形:

# for example
E = D - np.eye(D.shape[0])
corr_graph = nx.from_pandas_adjacency(E)

方法二:

創建圖形,並且只繪制具有不同源和目標的邊。

corr_graph = nx.from_pandas_adjacency(D)
edges = [(a,b) for (a,b) in corr_graph.edges() if a != b]
nx.draw_networkx_edges(corr_graph, edgelist=edges, pos=pos)

暫無
暫無

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

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