问题相对简单,我无法找到相同的任何指针。我有以下值的csv:
Source Destination value
a b 0.7
b c 0.58
c d 0.4
a d 0.52
b d 0.66
d b 0.30
a c 0.33
我想用python做图分析,我发现networkx是合适的选择。我使用以下代码实现了相同目的。
import networkx as nx
import pandas as pd
df = pd.read_csv('values.csv')
G = nx.from_pandas_edgelist(df, source='Source', target='Destination', edge_attr='value',)
G.nodes()
G.edges()
nx.draw_networkx(G, with_labels=True)
由于csv中的值具有b-> d和d-> b,因此它将是一个多向图,但是当我尝试输出结果时,我没有得到这些值。
G.nodes()
NodeView(('a', 'b', 'c', 'd'))
G.edges()
EdgeView([('a', 'b'), ('a', 'd'), ('a', 'c'), ('b', 'c'), ('b', 'd'), ('c', 'd')])
我想了解为什么我无法在边缘响应中获得d-> b的边缘。
我在文档中找到nx.MultiDiGraph,但不确定如何使用它。
谢谢
DiGraph
创建图形时,您应该只使用。
G = nx.from_pandas_edgelist(df, source='Source', target='Destination', edge_attr='value', create_using=nx.DiGraph)
print(G.edges())
# OutEdgeView([('a', 'b'), ('a', 'd'), ('a', 'c'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('d', 'b')])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句