当前位置: 首页 > 知识库问答 >
问题:

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

洪光霁
2023-03-14

我有一个由顶点和边表示的图的文本文件(邻接列表)。有没有一个工具来创建一个图形的可视化,它可以读取一个文本文件?

文本文件的格式为

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个答案

朱通
2023-03-14

我很好的图形可视化工具是GraphViz。Graphviz使用点格式。你可以这样写你的图形:

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的文件。

 类似资料:
  • 本文向大家介绍图的边和顶点,包括了图的边和顶点的使用技巧和注意事项,需要的朋友参考一下 图是一组称为节点或顶点的点,它们由一组称为edge的线互连。图形或图形理论的研究是数学,工程学和计算机科学领域中许多学科的重要组成部分。 图论 定义-图形(表示为G =(V,E))由一组非空的顶点或节点V和一组边缘E组成。顶点a 表示边缘的端点。一条边连接两个顶点a,b ,并由其连接的一组顶点表示。 示例-让我

  • 图的变换有什么算法或名称吗?可以把边变换成顶点,顶点变换成边?这样我们就可以得到一个新的图形或者类似的问题?我不确定这是否真的有意义,但我会很高兴,如果你能给我任何关于这样一个问题的提示。

  • GraphX暴露保存在图中的顶点和边的RDD。然而,因为GraphX包含的顶点和边拥有优化的数据结构,这些数据结构提供了额外的功能。顶点和边分别返回VertexRDD和EdgeRDD。这一章 我们将学习它们的一些有用的功能。 VertexRDDs VertexRDD[A]继承自RDD[(VertexID, A)]并且添加了额外的限制,那就是每个VertexID只能出现一次。此外,VertexRDD

  • 所以我正在研究这个问题: 这是我目前所掌握的 首先,我想对我的答案再作核实。我对有向图不是那么熟悉,对算法的效率/复杂度也不是特别熟练。我想我做得对,但如果我需要的话,我想要一些帮助。我也在寻找任何想法,使它更有效率。这些是我脑海中最先出现的算法,所以我觉得可能有更好的方法来实现它。 谢谢

  • 问题内容: 我想打开一个本地文件,并返回一个。原因是我需要向正在使用的库中提供,例如: 问题答案: 返回一个 http://play.golang.org/p/BskGT09kxL

  • 我有一个图数据结构,它是我从本文中复制的-http://www.dreamincode.net/forums/topic/377473-graph-data-structure-tutorial/ 我想在上面实现BFS算法。我不完全确定如何--我看到/读到的大多数关于该算法的文章都使用了更简单的数据结构。该数据结构存储顶点的散列映射,并将其字符串表示形式作为键,然后还存储边的散列映射,使用整数作为