簡體   English   中英

來自熊貓數據幀的定向加權圖

[英]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.

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