ENAS pygraphvizの交換

#pygraphvizをインストールするときに常にインストールできないため、graphvizを使用したい#最初の
インストール
pip install graphviz

from graphviz import Digraph
dot = Digraph(comment='The Round Table')
# 画一个圆中间的文字是中国 代号A
dot.node('A', '中国')
# 画一个圆中间的文字是美国 代号B
dot.node('B', '美国')
# 画一个圆中间的文字是韩国 代号C
dot.node('C', '韩国')
#  AB连线AC连线
dot.edges(['AB', 'AC'])
#  BC连线,在同一行上
dot.edge('B', 'C', constraint='false')
# 查看
dot.view()

if __name__ == '__main__':
    pass

ここに画像の説明を挿入

from graphviz import Digraph
f = Digraph('finite_state_machine', filename='fsm.gv')
# 设置字体大小
f.attr(rankdir='LR', size='8,5')
#设置形状
f.attr('node', shape='doublecircle')
# 画四个圆形。。。。
f.node('LR_0')
f.node('LR_3')
f.node('LR_4')
f.node('LR_8')
# 设置改行代下的形状
f.attr('node', shape='circle')
# 声明如果上面没有定义的节点在划线的时候出现会自动创建
f.edge('LR_0', 'LR_2', label='SS(B)')
f.edge('LR_0', 'LR_1', label='SS(S)')
f.edge('LR_1', 'LR_3', label='S($end)')
f.edge('LR_2', 'LR_6', label='SS(b)')
f.edge('LR_2', 'LR_5', label='SS(a)')
f.edge('LR_2', 'LR_4', label='S(A)')
f.edge('LR_5', 'LR_7', label='S(b)')
f.edge('LR_5', 'LR_5', label='S(a)')
f.edge('LR_6', 'LR_6', label='S(b)')
f.edge('LR_6', 'LR_5', label='S(a)')
f.edge('LR_7', 'LR_8', label='S(b)')
f.edge('LR_7', 'LR_5', label='S(a)')
f.edge('LR_8', 'LR_6', label='S(b)')
f.edge('LR_8', 'LR_5', label='S(a)')
#这样就可以保存为png了
f.format="png"
f.view()



if __name__ == '__main__':
    pass

ここに画像の説明を挿入

from graphviz import Digraph

g = Digraph('G', filename='cluster_edge.gv')
g.attr(compound='true')

with g.subgraph(name='cluster0') as c:
    c.edges(['ab', 'ac', 'bd', 'cd'])

with g.subgraph(name='cluster1') as c:
    c.edges(['eg', 'ef'])

g.edge('b', 'f', lhead='cluster1')
g.edge('d', 'e')
g.edge('c', 'g', ltail='cluster0', lhead='cluster1')
g.edge('c', 'e', ltail='cluster0')
g.edge('d', 'h')

g.view()

ここに画像の説明を挿入

ENAS utilsのdraw_network(dag、path)を次のコードに変更します

def draw_network(dag, path):

    makedirs(os.path.dirname(path))
    graph = Digraph('finite_state_machine', filename=path[:-4])
    checked_ids = [-2, -1, 0]
    if -1 in dag:
        graph.node("-1", 'x[t]')
    if -2 in dag:
        graph.node("-2", 'h[t-1]')

    graph.node( "0", dag[-1][0].name)

    for idx in dag:
        for node in dag[idx]:
            if node.id not in checked_ids:
                graph.node(str(node.id), node.name)
                checked_ids.append(str(node.id))
            graph.edge(str(idx), str(node.id))
    # graph.layout(prog='dot')
    graph.format="png"
    graph.view()


gifの生成時に問題が発生した場合は、次のリンクコードを個別に使用して
くださいhttps://dongfangyou.blog.csdn.net/article/details/105531237

すべてのソースコード
https://download.csdn.net/download/weixin_32759777/12328542

285の元の記事を公開 89を賞賛 248万ビュー

おすすめ

転載: blog.csdn.net/weixin_32759777/article/details/105511669