如何通过图形工具使用CSV文件数据在Python中创建图形?

如何通过图形工具使用CSV文件数据在Python中创建图形?,python,csv,graph-tool,Python,Csv,Graph Tool,我正在尝试使用graph tool()从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等)来完成,但我想使用graph tool来完成。假设您已经知道如何使用Python读取CSV文件(例如,使用),网站上的文档 差不多 import

我正在尝试使用graph tool()从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等)来完成,但我想使用graph tool来完成。

假设您已经知道如何使用Python读取CSV文件(例如,使用),网站上的文档

差不多

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()添加边列表。如果它们存储的名称与自动指定的索引不同,它将返回一个包含列表中名称的字符串列表

例如:

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)

您希望您的程序具有多大的通用性?(也就是说,你想打印你传递的任何CSV文件,还是只需要这一个?)你能发布你的代码吗?实际上,我用networkx做了一些代码,但我没有使用graph tool的任何代码(我不知道如何开始用graph tool读取edge),具体来说,你已经让CSV解析器工作了吗?i、 你的内存中已经有类似于
[[A,B,50],[A,C,50]]
的东西了吗?是的,我可以!可能是重复的感谢,我测试过,它的工作,但如果我想显示节点中的标签,而不是索引号呢?我使用这段代码来绘制图形:graph\u draw(g,vertex\u text=g.vertex\u index,vertex\u font\u size=18,output\u size=(800800),output=“two nodes.png”)