Python 3.x 数据帧中的有向加权图

Python 3.x 数据帧中的有向加权图,python-3.x,pandas,networkx,Python 3.x,Pandas,Networkx,我有一个熊猫数据帧(比如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_p

我有一个熊猫数据帧(比如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)

你能打印“G.edges(data=True)”吗?它在我的电脑上运行良好。是的,这确实显示了重量。可能是我没有正确地显示它。我如何看到边的重量(一种重量标签)在网络图上?你可以用其他方法绘制。我想我没有时间回答这个问题。建议:我认为你的数据中有拼写错误。另外,请提供一个具有预期输出的工作示例,以明确你的答案。第三,在你的主文本中编辑它,而不是评论。