1. 程式人生 > 程式設計 >Python呼叫graphviz繪製結構化圖形網路示例

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

首先要下載: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','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,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,hide_label+str(index-1),outp_label)
    else:
      draw(i,hide_label+str(index))

  return dot

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

以上這篇Python呼叫graphviz繪製結構化圖形網路示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。