最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中模塊graphviz使用入門(mén)

 更新時(shí)間:2025年05月02日 10:37:38   作者:編程零零七  
graphviz是一個(gè)用于創(chuàng)建和操作圖形的 Python 庫(kù),本文主要介紹了Python中模塊graphviz使用入門(mén),具有一定的參考價(jià)值,感興趣的可以了解一下

graphviz 是一個(gè)用于創(chuàng)建和操作圖形(如流程圖、網(wǎng)絡(luò)圖等)的 Python 庫(kù)。它依賴于 Graphviz 軟件包,后者是一個(gè)開(kāi)源的圖形可視化軟件。graphviz 庫(kù)允許你從 Python 腳本中生成 Graphviz 的點(diǎn)文件(DOT 文件),并渲染成圖像。

以下是使用 graphviz 的基本步驟:

1.安裝

1.1 安裝 Graphviz 軟件首先,你需要在你的系統(tǒng)上安裝 Graphviz 軟件包。你可以從 Graphviz 官網(wǎng) 下載并安裝它。安裝完成后,確保 dot 命令在你的系統(tǒng)路徑中可用。

1.2 安裝 Python 的 graphviz 庫(kù)你可以使用 pip 來(lái)安裝 Python 的 graphviz 庫(kù):

pip install graphviz

2. 基本用法

該graphviz模塊提供了兩個(gè)類:Graph和 Digraph。它們分別以DOT語(yǔ)言為無(wú)向圖和有向圖創(chuàng)建圖描述。它們具有相同的 API。通過(guò)實(shí)例化一個(gè)new Graph或 Digraphobject 創(chuàng)建一個(gè)圖形:

from graphviz import Digraph

dot = Digraph(comment='The Round Table')

print(dot)

輸出如下信息

// The Round Table
digraph {
}

然后我們可以添加點(diǎn)和邊,通過(guò)node()和edge()或edges()來(lái)實(shí)現(xiàn)。

from graphviz import Digraph

dot = Digraph(comment='The Round Table')
dot.node('A', 'King Arthur')
dot.node('B', 'Sir Bedevere the Wise')
dot.node('L', 'Sir Lancelot the Brave')

dot.edges(['AB', 'AL'])
dot.edge('B', 'L', constraint='false')
print(dot.source)  

生成的源代碼如下:

// The Round Table
digraph {
    A [label="King Arthur"]
    B [label="Sir Bedevere the Wise"]
    L [label="Sir Lancelot the Brave"]
    A -> B
    A -> L
    B -> L [constraint=false]
}

最后我們可以通過(guò)如下代碼保存圖像pdf文件,并顯示。通過(guò)設(shè)置view=True將自動(dòng)使用系統(tǒng)默認(rèn)的文件類型的查看器應(yīng)用程序打開(kāi)生成的文件(PDF,PNG,SVG等)。

dot.render('test-output/round-table.gv', view=True)  

在這里插入圖片描述

2.1 輸出圖像格式

要使用與默認(rèn)PDF 不同的輸出文件格式,請(qǐng)format在創(chuàng)建Graph或 Digraph對(duì)象時(shí)使用參數(shù):

from graphviz import Graph

g = Graph(format='png')

或者在基本用法的例子中在輸出中添加format='jpg’便可以獲得jpg圖像。

dot.render('test-output/round-table.gv',format='jpg', view=True)  

如果是想設(shè)置輸出圖像的dpi,需要在創(chuàng)建Graph或Digraph對(duì)象時(shí),設(shè)置dpi參數(shù)。

from graphviz import Graph

g = Graph(format='png')
g.graph_attr['dpi'] = '300'

2.2 圖像style設(shè)置

使用graph_attr,node_attr和 edge_attr參數(shù)更改默認(rèn)外觀的圖表,點(diǎn)和連接線。

from graphviz import Digraph

ps = Digraph(name='pet-shop', node_attr={'shape': 'plaintext'},format='png')
ps.node('parrot')
ps.node('dead')
ps.edge('parrot', 'dead')

在這里插入圖片描述

2.3 屬性

要設(shè)置圖中的所有后續(xù)圖形,點(diǎn)或邊的樹(shù)形,請(qǐng)使用attr()方法,如下所示:

from graphviz import Digraph
from graphviz import Graph
ni = Graph('ni',format='jpg')

ni.attr('node', shape='rarrow')
ni.node('1', 'Ni!')
ni.node('2', 'Ni!')

ni.node('3', 'Ni!', shape='egg')

ni.attr('node', shape='star')
ni.node('4', 'Ni!')
ni.node('5', 'Ni!')
ni.attr(rankdir='LR')

ni.edges(['12', '23', '34', '45'])
print(ni.source) 
ni.view()

在這里插入圖片描述

2.4 子圖和聚類

圖和有向圖對(duì)象有一個(gè)subgraph()-用于向?qū)嵗砑幼訄D的方法。
有兩種方法可以使用它:使用與唯一參數(shù)(其內(nèi)容作為子圖添加)類型相同的現(xiàn)成圖形對(duì)象,或者省略圖形參數(shù)(返回上下文管理器,以便在with塊中更優(yōu)雅地定義子圖內(nèi)容)。
第一個(gè)用法選項(xiàng),只有g(shù)raph作為參數(shù):

from graphviz import Digraph
from graphviz import Graph
p = Graph(name='parent', node_attr={'shape': 'plaintext'},format='png')
p.edge('spam', 'eggs')

c = Graph(name='child', node_attr={'shape': 'box'})
c.edge('foo', 'bar')

p.subgraph(c)
p.view()

第二次使用,帶有with-block(忽略graph參數(shù)):

p = Graph(name='parent')
p.edge('spam', 'eggs')

with p.subgraph(name='child', node_attr={'shape': 'box'}) as c:
    c.edge('foo', 'bar')

兩者結(jié)果相同如下圖所示:

在這里插入圖片描述

3 實(shí)例

代表的實(shí)例圖像如下所示

  • 有向圖
    代碼
from graphviz import Digraph
g = Digraph('G', filename='hello.gv',format='png')
g.edge('Hello', 'World')
g.view()

結(jié)果如圖所示:

在這里插入圖片描述

  • 無(wú)向圖
    代碼
from graphviz import Graph

g = Graph('G', filename='process.gv', engine='sfdp',format='png')

g.edge('run', 'intr')
g.edge('intr', 'runbl')
g.edge('runbl', 'run')
g.edge('run', 'kernel')
g.edge('kernel', 'zombie')
g.edge('kernel', 'sleep')
g.edge('kernel', 'runmem')
g.edge('sleep', 'swap')
g.edge('swap', 'runswap')
g.edge('runswap', 'new')
g.edge('runswap', 'runmem')
g.edge('new', 'runmem')
g.edge('sleep', 'runmem')

g.view()

結(jié)果如圖所示:

在這里插入圖片描述

  • 子圖
    代碼
from graphviz import Digraph

g = Digraph('G', filename='cluster.gv',format='png')

# NOTE: the subgraph name needs to begin with 'cluster' (all lowercase)
#       so that Graphviz recognizes it as a special cluster subgraph

with g.subgraph(name='cluster_0') as c:
    c.attr(style='filled', color='lightgrey')
    c.node_attr.update(style='filled', color='white')
    c.edges([('a0', 'a1'), ('a1', 'a2'), ('a2', 'a3')])
    c.attr(label='process #1')

with g.subgraph(name='cluster_1') as c:
    c.attr(color='blue')
    c.node_attr['style'] = 'filled'
    c.edges([('b0', 'b1'), ('b1', 'b2'), ('b2', 'b3')])
    c.attr(label='process #2')

g.edge('start', 'a0')
g.edge('start', 'b0')
g.edge('a1', 'b3')
g.edge('b2', 'a3')
g.edge('a3', 'a0')
g.edge('a3', 'end')
g.edge('b3', 'end')

g.node('start', shape='Mdiamond')
g.node('end', shape='Msquare')

g.view()

結(jié)果如圖所示:

在這里插入圖片描述

4 如何進(jìn)一步使用python graphviz

python graphviz官方文檔如下:

https://graphviz.readthedocs.io/en/stable/index.html

在實(shí)際使用時(shí),參考官方實(shí)例就行。

實(shí)際上graphviz畫(huà)一些流程圖即可,而且需要較大的調(diào)整參數(shù)。因此如果非緊急繪圖建議使用visio。

到此這篇關(guān)于Python中模塊graphviz使用入門(mén)的文章就介紹到這了,更多相關(guān)Python 模塊graphviz使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 學(xué)習(xí)python的幾條建議分享

    學(xué)習(xí)python的幾條建議分享

    熟悉python語(yǔ)言,以及學(xué)會(huì)python的編碼方式。熟悉python庫(kù),遇到開(kāi)發(fā)任務(wù)的時(shí)候知道如何去找對(duì)應(yīng)的模塊。知道如何查找和獲取第三方的python庫(kù),以應(yīng)付開(kāi)發(fā)任務(wù)
    2013-02-02
  • R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?

    R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?

    R語(yǔ)言和Python在數(shù)據(jù)分析方法都各有所長(zhǎng),兩者現(xiàn)在可以說(shuō)是都非常熱門(mén)的,那么這篇文章就來(lái)給大家總結(jié)介紹關(guān)于R語(yǔ)言和Python數(shù)據(jù)分析的相關(guān)資料,并給大家推薦了一些相關(guān)的書(shū)籍學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。
    2017-11-11
  • 關(guān)于np.meshgrid函數(shù)中的indexing參數(shù)問(wèn)題

    關(guān)于np.meshgrid函數(shù)中的indexing參數(shù)問(wèn)題

    Meshgrid函數(shù)在二維與三維空間中用于生成坐標(biāo)網(wǎng)格,便于進(jìn)行圖像處理和空間數(shù)據(jù)分析,二維情況下,默認(rèn)使用笛卡爾坐標(biāo)系,而三維meshgrid則涉及不同的坐標(biāo)軸取法,在三維情況下,可能會(huì)出現(xiàn)坐標(biāo)軸排列序混亂
    2024-09-09
  • python字典的常用方法總結(jié)

    python字典的常用方法總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于python字典的常用方法以及相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-07-07
  • numpy多維數(shù)組索引問(wèn)題

    numpy多維數(shù)組索引問(wèn)題

    這篇文章主要介紹了numpy多維數(shù)組索引的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python壓縮和解壓縮zip文件

    Python壓縮和解壓縮zip文件

    這篇文章主要介紹了Python壓縮和解壓縮zip文件,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-02-02
  • 利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測(cè)

    利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了利用Opencv中的Houghline方法進(jìn)行直線檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python利用matplotlib.pyplot.boxplot()繪制箱型圖實(shí)例代碼

    Python利用matplotlib.pyplot.boxplot()繪制箱型圖實(shí)例代碼

    相信大家應(yīng)該都知道Python繪制箱線圖主要用matplotlib庫(kù)里pyplot模塊里的boxplot()函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python利用matplotlib.pyplot.boxplot()繪制箱型圖的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python操作word常見(jiàn)方法示例【win32com與docx模塊】

    Python操作word常見(jiàn)方法示例【win32com與docx模塊】

    這篇文章主要介紹了Python操作word常見(jiàn)方法,結(jié)合實(shí)例形式分析了Python使用win32com模塊與docx模塊操作word的相關(guān)實(shí)現(xiàn)技巧及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python使用logging模塊創(chuàng)建和處理.log文件的多種方法

    Python使用logging模塊創(chuàng)建和處理.log文件的多種方法

    本文介紹了在Python中創(chuàng)建和處理.log文件的方法,推薦使用內(nèi)置的logging模塊,并詳細(xì)描述了基礎(chǔ)版、進(jìn)階版和專業(yè)版的實(shí)現(xiàn)方案,其中包括文件創(chuàng)建、日志級(jí)別、大小切割、日期切割、格式定制、多輸出目標(biāo)、高級(jí)功能等關(guān)鍵功能的說(shuō)明和實(shí)現(xiàn)方式,需要的朋友可以參考下
    2026-04-04

最新評(píng)論

阿克苏市| 普洱| 汝州市| 肇庆市| 天等县| 崇信县| 峨边| 南安市| 兰考县| 宜兰市| 安塞县| 巫山县| 新竹市| 甘洛县| 宝丰县| 宾川县| 马公市| 江门市| 玉屏| 淮安市| 博兴县| 阿坝县| 收藏| 湘潭县| 隆尧县| 孝感市| 呼伦贝尔市| 宁强县| 宣城市| 齐河县| 清丰县| 安多县| 梁河县| 车险| 当阳市| 乌鲁木齐县| 许昌县| 诸暨市| 邢台县| 开鲁县| 萝北县|