我有一个程序会生成一个非常大的字典样式列表,看起来像这样:
{"a":"b",
"b":"c",
"C":"d",
"d":"b",
"d":"e"}
我想使用 pygame 之类的东西创建一个程序来生成一个流程图,使用箭头将所有第一个术语连接到最后一个术语。这将忽略重复的连接并在它们自身加倍时生成项目循环。
如果上面的列表被处理,它看起来像这样(请原谅手绘):
我有一个程序会生成一个非常大的字典样式列表,看起来像这样:
{"a":"b",
"b":"c",
"C":"d",
"d":"b",
"d":"e"}
我想使用 pygame 之类的东西创建一个程序来生成一个流程图,使用箭头将所有第一个术语连接到最后一个术语。这将忽略重复的连接并在它们自身加倍时生成项目循环。
如果上面的列表被处理,它看起来像这样(请原谅手绘):
使用图表工具:
from graph_tool.all import *
g = Graph()
vals = [("a","b"), ("b","c"), ("c","d"), ("d","b"), ("c","e")]
vertexes_names = g.new_vertex_property("string")
vertexes = {}
for start, stop in vals:
if start not in vertexes:
vertexes[start] = g.add_vertex()
vertexes_names[vertexes[start]] = start
if stop not in vertexes:
vertexes[stop] = g.add_vertex()
vertexes_names[vertexes[stop]] = stop
g.add_edge(vertexes[start], vertexes[stop])
graph_tool.stats.remove_parallel_edges(g)
graph_draw(g, vertex_text=vertexes_names, vertex_font_size=18, output="output.png")