我开始使用graph-tool,从 pandas 数据框中导入边列表,df
例如:
node1 node2
0 1 2
1 2 3
2 1 4
3 3 1
4 4 3
5 1 5
所以基本上是有向边的列表。我根据教程将它们导入图形工具:
from graph_tool.all import *
import pandas as pd
# Read pandas dataframe
df = pd.read_csv('file.csv')
# Define Graph
g = Graph(directed=True)
# Add Edges
g.add_edge_list(df.values)
根据 add_edge_list( edge_list ) 的文档: edge_list可能是形状为 (E,2) 的 ndarray,其中 E 是边数,每行指定一个 (source, target) 对。
运行上述代码设置edge_list = df.values,并绘制图形,我得到:
这不是数据帧的原始edge_list的表示。我试图设置*edge_list* = df.values.tolist()
:
g.add_edge_list(df.values.tolist())
获得:
这实际上是正确的。任何人都可以重现这个?这里的问题是我正在使用巨大的网络(〜4 * 10 ^ 6节点),我认为该.tolist()
方法会在此过程中浪费大量内存。
编辑:添加用于绘制图形的代码:
graph_draw(g, vertex_text=g.vertex_index, vertex_font_size=18, output_size=(200, 200), output="graph.png")