Python基于matplotlib實現樹形圖的繪制

在Python中,你可以使用matplotlib庫來繪制樹形圖(Tree Diagram)。雖然matplotlib本身沒有專門的樹形圖繪制函數,但你可以通過組合不同的圖形元素(如線條和文本)來實現這一點。

以下是一個簡單的示例,演示如何使用matplotlib繪制樹形圖:

import matplotlib.pyplot as plt
import networkx as nx# 創建一個有向圖
G = nx.DiGraph()# 添加節點和邊
# 假設我們有一個簡單的樹結構:A -> B, C; B -> D, E; C -> F
edges = [('A', 'B'), ('A', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'F')]
G.add_edges_from(edges)# 創建一個布局,用于定位節點
pos = nx.spring_layout(G)# 繪制節點
nx.draw_networkx_nodes(G, pos, node_size=2000, node_color='lightblue')# 繪制邊
nx.draw_networkx_edges(G, pos, edgelist=edges, arrowstyle='-|>', arrowsize=20)# 繪制標簽
nx.draw_networkx_labels(G, pos, font_size=12, font_family="sans-serif")# 顯示圖形
plt.title('Tree Diagram')
plt.axis('off')  # 關閉坐標軸
plt.show()

在這個示例中,我們使用了networkx庫來創建和操作圖結構。networkx提供了方便的函數來添加節點和邊,并計算節點的位置。然后,我們使用matplotlib來繪制這些節點和邊。

詳細說明:

  1. 創建圖

    G = nx.DiGraph()
    

    這里我們創建了一個有向圖(DiGraph)。

  2. 添加節點和邊

    edges = [('A', 'B'), ('A', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'F')]
    G.add_edges_from(edges)
    

    我們定義了一個邊的列表,并使用add_edges_from方法將它們添加到圖中。

  3. 計算布局

    pos = nx.spring_layout(G)
    

    使用spring_layout函數計算節點的位置。這個函數基于彈簧模型來定位節點,使得圖形看起來比較美觀。

  4. 繪制節點

    nx.draw_networkx_nodes(G, pos, node_size=2000, node_color='lightblue')
    

    使用draw_networkx_nodes函數繪制節點,并設置節點的大小和顏色。

  5. 繪制邊

    nx.draw_networkx_edges(G, pos, edgelist=edges, arrowstyle='-|>', arrowsize=20)
    

    使用draw_networkx_edges函數繪制邊,并設置箭頭的樣式和大小。

  6. 繪制標簽

    nx.draw_networkx_labels(G, pos, font_size=12, font_family="sans-serif")
    

    使用draw_networkx_labels函數繪制節點的標簽。

  7. 顯示圖形

    plt.title('Tree Diagram')
    plt.axis('off')  # 關閉坐標軸
    plt.show()
    

    設置圖形的標題,關閉坐標軸,并顯示圖形。

通過這種方式,你可以使用matplotlibnetworkx庫來繪制復雜的樹形圖。如果你有更復雜的需求,比如自定義節點形狀、顏色或交互功能,你可以進一步探索這兩個庫的文檔和示例。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65098.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2 秒殺系統架構

第一步 思考面臨的問題和業務場景 秒殺系統面臨的問題: 短時間內并發非常高,如果按照秒殺的并發做相應的承載會造成大量資源的浪費。第二解決超賣的問題。 第二步 思考目前的處境和解決方案 因為秒殺系統屬于短時間內的高并發問題,我們不可能使用那么…

12306分流搶票軟件 bypass v1.16.43 綠色版(春節自動搶票工具)

軟件介紹 12306Bypass分流搶票軟件,易操作強大的12306搶票軟件,全程自動搶票,云識別驗證碼打碼,多線程秒單、穩定撿漏,支持搶候補票、搶到票自動付款,支持多天、多車次、多席別、多乘客、短信提醒等功能。…

淺談torch.utils.data.TensorDataset和torch.utils.data.DataLoader

1.torch.utils.data.TensorDataset 功能定位 torch.utils.data.TensorDataset 是一個將多個張量(Tensor)數據進行簡單包裝整合的數據集類,它主要的作用是將相關聯的數據(比如特征數據和對應的標簽數據等)組合在一起&…

【Go】運行自己的第一個Go程序

運行自己的第一個Go程序 一、Go語言的安裝Go環境安裝查看是否安裝成功配置GOPROXY(代理) 二、Goland安裝三、Goland破解四、新建項目 開一篇專欄記錄學習Go的過程,一門新語言從hello world開始,這篇文章詳細講解Go語言環境搭建及hello world實現 一、Go語…

計算機的錯誤計算(二百零一)

摘要 用兩個大模型計算 ,結果保留 10位有效數字。實驗表明,兩個大模型的輸出均只有1位正確數字;并它們幾乎相同:僅最后1位數字不同。 例1. 計算 , 結果保留 10位有效數字。 下面是與一個數學解題器的對話。 以上為與一個數學解…

下載excel

1.引入依賴 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.5</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-oo…

2024 年度時序數據庫 IoTDB 論文總結

論文成果總結 2024 年度&#xff0c;時序數據庫 IoTDB 在數據庫領域 CCF-A 類國際會議上共發表論文 8 篇&#xff0c;包括&#xff1a;SIGMOD 3 篇、VLDB 3 篇、ICDE 2 篇&#xff0c;涵蓋存儲、引擎、查詢、分析等方面。 2024 最后一天&#xff0c;我們將分類盤點 IoTDB 本年的…

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found

這個問題之前遇到過&#xff0c;沒有記錄&#xff0c;導致今天又花了2小時 原因是沒有GLIBC——2.32 使用以下命令查一下有哪些版本&#xff1a; strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_ 我已經安裝好了&#xff0c;所有有2.32版本 原因是當前的ubuntu版本…

海南省大數據發展中心:數據資產場景化評估案例手冊(第二期)

2025年1月3日&#xff0c;海南省數據產品超市印發《數據資產場景化評估案例手冊&#xff08;第二期&#xff09;》&#xff08;以下簡稱《手冊》&#xff09;&#xff0c;該手冊是基于真實數據要素典型應用場景進行數據資產評估操作的指導性手冊&#xff0c;為企業在數據資產入…

python3GUI--智慧交通監控與管理系統 By:PyQt5

文章目錄 一&#xff0e;前言二&#xff0e;預覽三&#xff0e;軟件組成&技術難點1.軟件組成結構2.技術難點3.項目結構 四&#xff0e;總結 大小&#xff1a;35.5 M&#xff0c;軟件安裝包放在了這里! 一&#xff0e;前言 博主高產&#xff0c;本次給大家帶來一款我自己使…

Linux高并發服務器開發 第八天(makefile的規則 wildcard/patsubst函數 普通變量/自動變量/其他關鍵字)

目錄 1.makefile 1.1makefile的規則 1.2兩個函數 1.3三個自動變量 1.3.1普通變量 (自定義變量) 1.3.2自動變量 1.3.3其他關鍵字 - ALL/all - clean 1.makefile - 作用&#xff1a;進行項目管理。 - 初步學習&#xff1a;1個規則、2個函數、3個自動變量。 - 要想使用默…

Vue動態控制disabled屬性

參考:https://blog.csdn.net/guhanfengdu/article/details/126082781 在Vue中disabled:的值是受布爾值影響的&#xff0c;false為關閉禁用&#xff0c;true為開啟禁用效果。 結果就是true會讓按鈕禁用 相反false會讓按鈕重新可以使用 那如果想要通過id屬性值來判斷是否禁用…

【DevOps】Jenkins項目發布

Jenkins項目發布 文章目錄 Jenkins項目發布前言資源列表基礎環境一、Jenkins發布靜態網站1.1、項目介紹1.2、部署Web1.3、準備gitlab1.4、配置gitlab1.5、創建項目1.6、推送代碼 二、Jenkins中創建gitlab憑據2.1、創建憑據2.2、在Jenkins中添加遠程主機2.3、獲取gitlab項目的UR…

每日一學——自動化工具(Jenkins)

3.2 Jenkins 3.2.1 CI/CD流程設計 嘿&#xff0c;小伙伴們&#xff01;今天我們來聊聊Jenkins——這個在持續集成&#xff08;CI&#xff09;和持續部署&#xff08;CD&#xff09;領域里大名鼎鼎的工具。Jenkins不僅可以幫我們自動化構建和測試代碼&#xff0c;還能自動部署…

Vue2/Vue3使用DataV

Vue2 注意vue2與3安裝DataV命令命令是不同的Vue3 DataV - Vue3 官網地址 注意vue2與3安裝DataV命令命令是不同的 vue3vite 與 Vue3webpack 對應安裝也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…

【AI學習】Transformer深入學習(二):從MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入學習&#xff08;一&#xff09;&#xff1a;Sinusoidal位置編碼的精妙》 一、MHA、MQA、GQA 為了降低KV cache&#xff0c;MQA、GQA作為MHA的變體&#xff0c;很容易理解。 多頭注意力&#xff08;MHA&#xff09;&#xff1a; 多頭注…

trendFinder - 利用 AI 掌握社交媒體上的熱門話題

1600 Stars 177 Forks 7 Issues 2 貢獻者 MIT License Javascript 語言 代碼: https://github.com/ericciarla/trendFinder 更多AI開源軟件&#xff1a;AI開源 - 小眾AI Trend Finder 收集并分析來自關鍵影響者的帖子&#xff0c;然后在檢測到新趨勢或產品發布時發送 Slack 通知…

以圖像識別為例,關于卷積神經網絡(CNN)的直觀解釋

大家讀完覺得有意義記得關注和點贊&#xff01;&#xff01;&#xff01; 作者以圖像識別為例&#xff0c;用圖文而非數學公式的方式解釋了卷積神經網絡的工作原理&#xff0c; 適合初學者和外行掃盲。 目錄 1 卷積神經網絡&#xff08;CNN&#xff09; 1.1 應用場景 1.2 起…

Python 數據結構揭秘:棧與隊列

棧&#xff08;Stack&#xff09; 定義 棧是一種后進先出&#xff08;Last In First Out, LIFO&#xff09;的數據結構。它類似于一個容器&#xff0c;只能在一端進行插入和刪除操作。棧有兩個主要的操作&#xff1a;push&#xff08;入棧&#xff09;和 pop&#xff08;出棧…

vim 的基礎使用

目錄 一&#xff1a;vim 介紹二&#xff1a;vim 特點三&#xff1a;vim 配置四&#xff1a;vim 使用1、vim 語法格式2、vim 普通模式&#xff08;1&#xff09;保存退出&#xff08;2&#xff09;光標跳轉&#xff08;3&#xff09;文本刪除&#xff08;4&#xff09;文本查找&…