[英]directed weighted graph from pandas dataframe
我有一個pandas數據幀(比方說df),它有三列:
src dst weight
a b 2
c d 7
b a 5
d c 1
d a 3
a a 4
b b 1
我想創建一個有向加權圖。 我嘗試了以下但我無法在可視化中獲得權重。
G = nx.from_pandas_dataframe(df,source='src', target='dst', edge_attr=['weight'], create_using=nx.DiGraph())
nx.draw_circular(G, with_labels=True)
plt.show()
任何建議如何可視化邊緣的重量? 此外,我有興趣看到兩個節點之間的兩個方向的權重(如果存在雙向連接)。 我也有興趣可視化以一定重量連接到自身的節點。 例如,在示例數據中,節點“a”連接到權重為4的節點“a”,您如何將其視為閉合或循環連接之王? 我正在使用Networkx庫。
graphviz
有各種各樣的功能來呈現各種格式的復雜圖形,甚至networkx
也有插件到graphviz
。 詳情請見此處 。
這是使用您的數據通過graphviz
生成的簡單圖表。 您可以添加許多鈴聲和口哨聲,如節點,邊緣顏色,字體等。您還可以直接保存到特定的文件格式,包括pdf。
from graphviz import Digraph
import pandas as pd
G = Digraph(format='jpeg')
G.attr(rankdir='LR', size='8,5')
G.attr('node', shape='circle')
df = pd.read_csv('data.txt', sep=",", engine='python')
nodelist = []
for idx, row in df.iterrows():
node1, node2, weight = [str(i) for i in row]
if node1 not in nodelist:
G.node(node1)
nodelist.append(node2)
if node2 not in nodelist:
G.node(node2)
nodelist.append(node2)
G.edge(node1,node2, label = weight)
G.render('sg', view=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.