【发布时间】:2016-05-13 13:32:18
【问题描述】:
我有一个由顶点和边表示的图的文本文件(邻接列表)。是否有工具可以创建可以读取文本文件的图形可视化?
文本文件的格式是
0 1 2
1 3 6
2 3 7
3 4
4 5
5 6 7
6 8
7 8
这是一个无向图。 0 1 2 表示 0 个邻居 1,0 个邻居 2,反之亦然,因为它是无向的。
谢谢
鲁珀特
【问题讨论】:
标签: graph
我有一个由顶点和边表示的图的文本文件(邻接列表)。是否有工具可以创建可以读取文本文件的图形可视化?
文本文件的格式是
0 1 2
1 3 6
2 3 7
3 4
4 5
5 6 7
6 8
7 8
这是一个无向图。 0 1 2 表示 0 个邻居 1,0 个邻居 2,反之亦然,因为它是无向的。
谢谢
鲁珀特
【问题讨论】:
标签: graph
我很好的图形可视化工具是graphviz。 Graphviz 使用dot 格式。你可以这样写你的图表:
strict graph {
0 -- 1;
0 -- 2;
1 -- 3;
1 -- 6;
2 -- 3;
2 -- 7;
3 -- 4;
4 -- 5;
5 -- 6;
5 -- 7;
6 -- 8;
7 -- 8;
}
要生成图形的图像,请执行
dot -Tpng g.dot > g.png
生成此图像:
您可以配置dot 以使用不同的布局。
如果您的图形很大并且无法手动转换为点格式,您可以使用以下 python 脚本(它使用带有 pygraphviz 的networkx)读取您的 adj 格式并生成点格式的文件:
import networkx as nx
import os
import sys
inf = sys.argv[1]
out = os.path.splitext(inf)[0] + '.dot'
g = nx.Graph()
for line in open(inf).readlines():
adj = list(map(int, line.split()))
u = adj[0]
for v in adj[1:]:
g.add_edge(u, v)
nx.write_dot(g, out)
执行这个脚本执行
python script.py graph.txt
将生成一个名为graph.dot 的文件。
【讨论】: