从顶点和边的文本文件创建图形

时间:2016-05-13 13:32:18

标签: 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,反之亦然,因为它是无向的。

由于

鲁珀特

1 个答案:

答案 0 :(得分:3)

我的图形可视化工具是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

制作此图片:

enter image description here

您可以将dot配置为使用其他布局。

如果您的图表很大并且手动转换为点格式是不可行的,您可以使用以下python脚本(它使用networkx和pygraphviz)读取您的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的文件。