Python呼叫graphviz繪製結構化圖形網路

曉東邪發表於2018-03-21

這個repo 用來記錄一些python技巧、書籍、學習連結等,歡迎star

github地址

首先要下載:Graphviz - Graph Visualization Software

安裝完成後將安裝目錄的bin 路徑加到系統路徑中,有時候需要重啟電腦。
然後:
pip install graphviz

import graphviz as gz

有向圖

dot = gz.Digraph()
dot.node('1', 'Test1')
dot.node('2', 'Test2')
dot.node('3', 'Test3')
dot.node('4', 'Test4')
dot.edges(['12', '23', '34', '24'])
dot

這裡寫圖片描述

無向圖

dot = gz.Graph()
dot.node('1', 'Test1')
dot.node('2', 'Test2')
dot.node('3', 'Test3')
dot.node('4', 'Test4')
dot.edges(['12', '23', '34', '24'])
dot

這裡寫圖片描述

來個隨機點的複雜點的圖

import random

dot = gz.Digraph()
for i in range(10):
    dot.node('%s' % i, 'Test%s' % i)
dot.edges([str(random.randint(10, 99)) for i in range(10)])
dot

這裡寫圖片描述

繪製神經網路簡易圖

def neural_graph(inp=3, hide=(10, ), outp=3, inp_label='input', hide_label='hide', outp_label='output', dropout=True, style='h', size='2, 1'):
    """
    繪製簡易神經網路圖(有向圖)
    :param inp: 輸入神經元個數
    :param hide: 隱藏層神經元個數, 可迭代陣列
    :param outp: 輸出神經元個數
    :param inp_label: 輸入名稱顯示
    :param hide_label: 隱藏層名稱顯示
    :param outp_label: 輸出名稱顯示
    :param dropout: 是否全連線
    :param style: 水平或垂直顯示, 可選項為 'h', 'v'
    :param size: 影象顯示大小
    :return: 有向圖
    """

    dot = gz.Digraph(name='neural network')
    dot.attr(size=size)
    if style == 'v':
        dot.attr(rankdir='LR')

    def draw(enter, exit, label1, label2):
        for i in range(enter):
            for j in range(exit):
                if dropout:
                    if random.randint(0, max(enter, exit)):
                        dot.edge('%s%s' % (label1, i), '%s%s' % (label2, j))
                else:
                    dot.edge('%s%s' % (label1, i), '%s%s' % (label2, j))
    hide = list(hide)
    hide.insert(0, inp)
    hide.append(outp)
    for index, (i, j) in enumerate(zip(hide[:-1], hide[1:])):
        if index == 0:
            draw(i, j, inp_label, hide_label+str(index))
        elif index == len(hide) - 2:
            draw(i, j, hide_label+str(index-1), outp_label)
        else:
            draw(i, j, hide_label+str(index-1), hide_label+str(index))

    return dot

    #其他執行方式
    #return dot.view()

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

這個repo 用來記錄一些python技巧、書籍、學習連結等,歡迎star

github地址

相關文章