用Python用pydot用Dot语言编写的图像文件


Chainer的extensions.dump_graph将输出以Dot语言编写的文件。这个Dot文件可以用graphviz进行映像,但是这次将使用Python进行映像。

操作环境

  • Ubuntu 16.04
  • Python 3.5.2
  • Graphviz
  • pydot

使用例

以下是可视化执行MNIST时生成的Dot文件的结果。

我想读取多个Dot文件,所以输入的是Dot文件文件路径的列表。 ext是要使用的扩展,并支持png,pdf和svg格式的输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
import pydot

def main(name_list, ext):
    for name in name_list:
        # dot言語で記述されたファイルを読み込む
        (graph,) = pydot.graph_from_dot_file(name)
        # 保存用の名前を抽出する
        name, _ = os.path.splitext(os.path.basename(name))
        # 形式を選択して保存する
        if(ext == 'png'):
            graph.write_png(getFilePath(args.out_path, name, '.png'))
        elif(ext == 'pdf'):
            graph.write_pdf(getFilePath(args.out_path, name, '.pdf'))
        elif(ext == 'svg'):
            graph.write_svg(getFilePath(args.out_path, name, '.svg'))
        else:
            print('[ERROR] ext option miss:', args.ext)

getFilePath是os.path.join的一个油包,因此如果不需要它可以替换它。

1
2
3
4
5
def getFilePath(folder, name, ext):
    if not os.path.isdir(folder):
        os.makedirs(folder)

    return os.path.join(folder, name + ext)