如何通过图表工具使用 CSV 文件数据在 Python 中创建图表?
How to create a graph in Python using a CSV File data by graph-tool?
我正在尝试使用图表工具 (https://graph-tool.skewed.de) 从内容如下的 csv 文件创建图表:
A,B,50
A,C,34
C,D,55
D,D,80
A,D,90
B,D,78
现在我想创建一个以A、B、C、D为节点,第三列数字为边的图。我正在使用图形工具库。第三列数字显示了A、B和A、C等共享的公共项目。
我可以通过 "networkx"(read_edgelist 等)来完成,但我想使用图形工具来完成。
假设您已经知道如何读取 Python 中的 CSV 文件(例如,使用 CSV library), The docs on the website explain how to do this very clearly.
类似
import graph_tool
g = Graph(directed=False)
# this is the result of csv.parse(file)
list_of_edges = [['A', 'B', 50], ['A','C',34], ['C','D',55], ['D','D',80], ['A','D',90], ['B','D',78]]
vertices = {}
for e in list_of_edges:
if e[0] not in vertices:
vertices[e[0]] = True
if e[1] not in vertices:
vertices[e[1]] = True
for d in vertices:
vertices[d] = g.add_vertex()
for edge in list_of_edges:
g.add_edge(vertices[edge[0]], vertices[edge[1]])
您可以使用 add_edge_list() 添加边列表。如果它们存储的名称与自动分配的索引不同,它将 return 一个包含列表中名称的字符串列表。
示例:
from graph_tool.all import *
import csv
g=Graph(directed=False)
csv_E = csv.reader(open('*text_input*'))
e_weight=g.new_edge_property('float')
v_names=g.add_edge_list(csv_E,hashed=True,string_vals=True,eprops=[e_weight])
#this will assign the weight to the propery map *e_weight* and the names to *v_names*
graph_draw(g, vertex_text=v_names)
我正在尝试使用图表工具 (https://graph-tool.skewed.de) 从内容如下的 csv 文件创建图表:
A,B,50
A,C,34
C,D,55
D,D,80
A,D,90
B,D,78
现在我想创建一个以A、B、C、D为节点,第三列数字为边的图。我正在使用图形工具库。第三列数字显示了A、B和A、C等共享的公共项目。
我可以通过 "networkx"(read_edgelist 等)来完成,但我想使用图形工具来完成。
假设您已经知道如何读取 Python 中的 CSV 文件(例如,使用 CSV library), The docs on the website explain how to do this very clearly.
类似
import graph_tool
g = Graph(directed=False)
# this is the result of csv.parse(file)
list_of_edges = [['A', 'B', 50], ['A','C',34], ['C','D',55], ['D','D',80], ['A','D',90], ['B','D',78]]
vertices = {}
for e in list_of_edges:
if e[0] not in vertices:
vertices[e[0]] = True
if e[1] not in vertices:
vertices[e[1]] = True
for d in vertices:
vertices[d] = g.add_vertex()
for edge in list_of_edges:
g.add_edge(vertices[edge[0]], vertices[edge[1]])
您可以使用 add_edge_list() 添加边列表。如果它们存储的名称与自动分配的索引不同,它将 return 一个包含列表中名称的字符串列表。
示例:
from graph_tool.all import *
import csv
g=Graph(directed=False)
csv_E = csv.reader(open('*text_input*'))
e_weight=g.new_edge_property('float')
v_names=g.add_edge_list(csv_E,hashed=True,string_vals=True,eprops=[e_weight])
#this will assign the weight to the propery map *e_weight* and the names to *v_names*
graph_draw(g, vertex_text=v_names)