我正在尝试在 graphviz 的帮助下自动将我的文本文件转换为无向图。文本文件包含以下代码:
0
A
Relation
B
A
Relation
C
B
Relation
C
1
0
A
Relation
C
B
Relation
C
1
这里 A、B 和 C 是节点。我可能需要一个或多个图表。0 和 1 代表每个图形的开始和结束。关系的数量也可能不同。我试图继续使用 sed,但迷路了。我应该如何继续获得我需要的图表?谢谢你的帮助。
我正在尝试在 graphviz 的帮助下自动将我的文本文件转换为无向图。文本文件包含以下代码:
0
A
Relation
B
A
Relation
C
B
Relation
C
1
0
A
Relation
C
B
Relation
C
1
这里 A、B 和 C 是节点。我可能需要一个或多个图表。0 和 1 代表每个图形的开始和结束。关系的数量也可能不同。我试图继续使用 sed,但迷路了。我应该如何继续获得我需要的图表?谢谢你的帮助。
我自己不使用 PyGraphViz,但在 Python 中进行文本处理很容易。给定问题中的输入文件(我称之为gra1.txt
)和 Python 文件gr.py
,如下所示:
import sys, subprocess
count = 0
for line in sys.stdin:
if line[0] == '0':
outf = "g%d" % (count)
g = "graph G%d {\n" % (count)
count += 1
elif line[0] == '1':
g += "}\n"
dot = subprocess.Popen(["dot", "-Tjpg", "-o%s.jpg" % outf],
stdin=subprocess.PIPE,universal_newlines=True)
print (g)
dot.communicate(g)
elif len(line.rstrip()) == 0:
pass
else:
first = line.rstrip()
rel = sys.stdin.readline()
last = sys.stdin.readline().rstrip()
g += "%s -- %s\n" % (first,last)
...命令python gra1.py <gra1.txt
产生输出:
$ python gra1.py <gra1.txt
graph G0 {
A -- B
A -- C
B -- C
}
graph G1 {
A -- C
B -- C
}
...连同文件g0.jpg
:
...和g1.jpg
:
您可以使用 graphviz python 库来完成。要安装它,您只需要启动:
pip install graphviz
然后在 Python 中你可以这样做:
from graphviz import Source
text_from_file = str()
with open('graphviz_dot_file.txt') as file:
text_from_file = file.read()
src = Source(text_from_file)
src.render(test.gv', view=True )
您可以在Graphviz 的手册中找到更多信息