gpt4 book ai didi

python-3.x - 来自 Pandas 数据框的有向加权图

转载 作者:行者123 更新时间:2023-12-03 16:48:03 28 4
gpt4 key购买 nike

我有一个 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 的插件。参见 here了解详情。

这是使用您的数据通过 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)

enter image description here

关于python-3.x - 来自 Pandas 数据框的有向加权图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645180/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com