第二十八章:Python可視化圖表擴展-和弦圖、旭日圖、六邊形箱圖、桑基圖和主題流圖

一、引言

? ? ?在數據可視化領域,除了常見的折線圖、柱狀圖和散點圖,還有一些高級圖表類型可以幫助我們更直觀地展示復雜數據關系。本文將介紹五種擴展圖表:和弦圖、旭日圖、六邊形箱圖、桑基圖和主題流圖。這些圖表在展示數據關系、層次結構和流量分布方面具有獨特的優勢。資源綁定附上完整資料供讀者參考學習!

二、和弦圖

2.1 什么是和弦圖?

? ? 和弦圖(Chord Diagram)是一種用于展示矩陣數據的可視化工具,通常用于展示不同節點之間的關系強度。它通過弧線連接節點,弧線的寬度表示關系的強度

2.2 示例代碼

import plotly.graph_objects as go# 創建數據
nodes = ['A', 'B', 'C', 'D', 'E']
matrix = [[0, 10, 5, 3, 2],[10, 0, 8, 4, 1],[5, 8, 0, 6, 7],[3, 4, 6, 0, 9],[2, 1, 7, 9, 0]]# 創建和弦圖
fig = go.Figure(data=go.Sankey(node=dict(pad=15,thickness=20,line=dict(color="black", width=0.5),label=nodes,color="blue"),link=dict(source=[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4],target=[1, 2, 3, 4, 0, 2, 3, 4, 0, 1, 3, 4, 0, 1, 2, 4, 0, 1, 2, 3],value=[10, 5, 3, 2, 10, 8, 4, 1, 5, 8, 6, 7, 3, 4, 6, 9, 2, 1, 7, 9])
))# 顯示圖表
fig.show()

2.3 說明

  • 節點和矩陣:節點是圖中的實體,矩陣表示節點之間的關系強度

  • 顏色映射:使用cmapedge_cmap設置顏色映射

三、旭日圖

3.1 什么是旭日圖?

? ? 旭日圖(Sunburst Chart)是一種層次結構可視化工具,用于展示層次數據。它通過環形扇區展示數據的層次關系,每個扇區的大小表示數據的值

3.2 示例代碼

import matplotlib.pyplot as plt
import numpy as np
import plotly.express as px# 創建數據
data = dict(character=["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"],parent=["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve"],value=[10, 14, 12, 10, 2, 6, 6, 4, 4]
)# 創建旭日圖
fig = px.sunburst(data,names='character',parents='parent',values='value',title='旭日圖示例'
)# 顯示圖表
fig.show()

3.3 說明

  • 層次數據:通過namesparents參數定義層次關系

  • :通過values參數設置每個節點的大小

四、六邊形箱圖

4.1 什么是六邊形箱圖?

? ? 六邊形箱圖(Hexbin Plot)是一種用于展示二維數據密度的圖表。它將數據點劃分到六邊形網格中,并通過顏色深淺表示密度

4.2 示例代碼

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 創建數據
x = np.random.normal(0, 1, 1000)
y = np.random.normal(0, 1, 1000)# 創建六邊形箱圖
plt.figure(figsize=(10, 8))
plt.hexbin(x, y, gridsize=30, cmap="mako")
plt.title('六邊形箱圖示例')
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.colorbar(label='密度')
plt.show()

4.3 說明

  • 數據分布:使用histplot函數創建六邊形箱圖

  • 顏色映射:通過cmap參數設置顏色映射

五、桑基圖

5.1 什么是桑基圖?

? ? 桑基圖(Sankey Diagram)是一種用于展示流量或轉移的圖表。它通過帶狀連接展示不同節點之間的流量大小。

5.2 示例代碼

import plotly.graph_objects as go
labels = ["Coal", "Solar", "Wind", "Nuclear", "Residential", "Industrial", "Commercial"]
source = [0, 1, 2, 3, 0, 1, 2, 3]
target = [4, 4, 4, 4, 5, 5, 5, 5]
value = [25, 10, 40, 20, 30, 15, 25, 35]
#Create the Sankey diagram object
fig = go.Figure(data=[go.Sankey(node=dict(pad=15,thickness=20,line=dict(color="black", width=0.5),label=labels),link=dict(source=source,target=target,value=value))])
fig.update_layout(title_text="Energy Flow in Model City", font_size=12)
fig.show()

5.3 說明

  • 節點和邊:通過sourcetarget定義節點,value表示流量大小。

  • 顏色映射:使用cmap設置顏色映射。

六、主題流圖

6.1 什么是主題流圖?

主題流圖(Theme River)是一種用于展示時間序列數據的圖表,通常用于展示多個主題隨時間的變化趨勢。

6.2 示例代碼

import altair as alt
from vega_datasets import datasource = data.unemployment_across_industries.urlchart = alt.Chart(source).mark_area().encode(alt.X('yearmonth(date):T',axis=alt.Axis(format='%Y', domain=False, tickSize=0)),alt.Y('sum(count):Q', stack='center', axis=None),alt.Color('series:N',scale=alt.Scale(scheme='category20b'))
).interactive()# 保存為HTML文件
chart.save('unemployment_chart.html')

6.3 說明

  • 時間序列:通過stackplot函數創建主題流圖。

  • 堆疊區域:每個主題的區域堆疊在一起,展示隨時間的變化趨勢。

七、總結

? ? ?本文介紹了五種擴展可視化圖表:和弦圖、旭日圖、六邊形箱圖、桑基圖和主題流圖。這些圖表在展示復雜數據關系、層次結構和流量分布方面具有獨特的優勢。希望這些示例能夠激發您的靈感,幫助您在實際項目中選擇合適的圖表類型。資源綁定附上完整資料供讀者參考學習!

如果您有任何問題或建議,請隨時在評論區留言!

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

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

相關文章

大模型-爬蟲prompt

爬蟲怎么寫prompt 以下基于deepseek r1 總結: 以下是為大模型設計的結構化Prompt模板,用于生成專業級網絡爬蟲Python腳本。此Prompt包含技術約束、反檢測策略和數據處理要求,可根據具體需求調整參數: 爬蟲腳本生成Prompt模板1 …

Vue中將pdf文件轉為圖片

平時開發中,我們經常遇到的場景應該是調用后端接口返回給前端pdf格式的文件流,然后我們可以通過URL.createObjectURL的方式轉為object url臨時路徑然后可以通過window.open的方式來打開一個新的瀏覽器頁簽來進行預覽,效果如下圖: 但有時候這樣滿足不了的需求,它不想這樣預…

物聯網安全技術:守護智能世界的防線

最近研學過程中發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊鏈接跳轉到網站人工智能及編程語言學習教程。讀者們可以通過里面的文章詳細了解一下人工智能及其編程等教程和學習方法。下面開始對正文內容的…

kubernetes安裝部署k8s

kubernetes https://github.com/kubernetes/kubernetes.git go mod tidy go mod vendor go build -o .\bin -v ./… //手動創建bin文件夾 使用 minikube:https://gitee.com/mirrors/minikube.git 使用minikube啟動本地化的集群服務 minikube start 啟動集群&…

JT/T 1078 協議基本介紹與解析

文章目錄 一、JT/T 1078 協議基本介紹二、JT/T 1078 與 JT808 的關系三、JT1078 協議核心功能四、JT1078 數據結構概覽4.1、消息結構:4.2、消息類型(部分): 五、Java 中如何解析 JT1078 協議數據?5.1、JT1078 消息 ID …

手機為電腦提供移動互聯網絡的3種方式

寫作目的 在當今數字化時代,電腦已成為人們日常工作和生活中不可或缺的工具,而網絡連接更是其核心功能之一。無論是處理工作任務、進行在線學習、還是享受娛樂資源,穩定的網絡環境都是保障這些活動順利開展的關鍵。然而,在實際使用過程中,電腦網絡驅動故障時有發生,這可…

Linux的 /etc/sysctl.conf 筆記250404

Linux的 /etc/sysctl.conf 筆記250404 /etc/sysctl.conf 是 Linux 系統中用于 永久修改內核運行時參數 的核心配置文件。它通過 sysctl 工具實現參數的持久化存儲,確保系統重啟后配置依然生效。以下是其詳細說明: 📂 備份/etc/sysctl.conf t…

deepseek v3-0324 Markdown 編輯器 HTML

Markdown 編輯器 HTML 以下是一個美觀的 Markdown 編輯器 HTML 頁面&#xff0c;支持多種主題切換和實時預覽功能&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&q…

Linux make 檢查依賴文件更新的原理

1. 文件的時間戳 make 主要依靠文件的時間戳來判斷依賴文件是否有更新。每個文件在文件系統中都有一個時間戳&#xff0c;記錄了文件的三種重要時間&#xff1a; ??訪問時間&#xff08;Accesstime&#xff09;??&#xff1a;文件最后一次被訪問的時間。??修改時間&…

HDEBits中組合邏輯類的部分題目練習

文章目錄 1. More logic gates2. Truth tables3. 256-to-1 4-bit multiplexer4. 3-bit binary adder5. Signed addition overflow6. 4-digit BCD adder7. Minimum SOP and POS8. Karnaugh map9. K-map implemented with a multiplexer總結 1. More logic gates 題目&#xff1…

Apache httpclient okhttp(2)

學習鏈接 Apache httpclient & okhttp&#xff08;1&#xff09; Apache httpclient & okhttp&#xff08;2&#xff09; okhttp github okhttp官方使用文檔 okhttp官方示例代碼 OkHttp使用介紹 OkHttp使用進階 譯自OkHttp Github官方教程 SpringBoot 整合okHttp…

【git項目管理】長話短說

目錄 主要分為三種使用情況 安裝git后第一次使用創建新倉庫并管理克隆倉庫并管理 初次使用git 首先確定電腦的用戶名是純英文&#xff0c;沒有中文和奇怪的符號&#xff0c;如果不滿足這個條件&#xff0c;參考這個 鏈接 修改用戶名 git config --global user.name "…

算法刷題記錄——LeetCode篇(3.2) [第211~212題](持續更新)

更新時間&#xff1a;2025-04-04 算法題解目錄匯總&#xff1a;算法刷題記錄——題解目錄匯總技術博客總目錄&#xff1a;計算機技術系列博客——目錄頁 優先整理熱門100及面試150&#xff0c;不定期持續更新&#xff0c;歡迎關注&#xff01; 215. 數組中的第K個最大元素 給…

【linux學習】linux系統調用編程

目錄 一、任務、進程和線程 1.1任務 1.2進程 1.3線程 1.4線程和進程的關系 1.5 在linux系統下進程操作 二、Linux虛擬內存管理與stm32的真實物理內存區別 2.1 Linux虛擬內存管理 2.2 STM32的真實物理內存映射 2.3區別 三、 Linux系統調用函數 fork()、wait()、exec(…

react redux的學習,多個reducer

redux系列文章目錄 第一章 簡單學習redux,單個reducer 前言 前面我們學習到的是單reducer的使用&#xff1b;要知道redux是個很強大的狀態存儲庫&#xff0c;可以支持多個reducer的使用。 combineReducers ?combineReducers?是Redux中的一個輔助函數&#xff0c;主要用于…

Oracle數據庫數據編程SQL<3.5 PL/SQL 存儲過程(Procedure)>

存儲過程(Stored Procedure)是 Oracle 數據庫中一組預編譯的 PL/SQL 語句集合,存儲在數據庫中并可通過名稱調用執行。它們是企業級數據庫應用開發的核心組件。 目錄 一、存儲過程基礎 1. 存儲過程特點 2. 創建基本語法 3. 存儲過程優點 4. 簡單示例 二、沒有參數的存儲…

手撕AVL樹

引入&#xff1a;為何要有AVL樹&#xff0c;二次搜索樹有什么不足&#xff1f; 二叉搜索樹有其自身的缺陷&#xff0c;假如往樹中插入的元素有序或者接近有序&#xff0c;二叉搜索樹就會退化成單支樹&#xff0c;時間復雜度會退化成O(N)&#xff0c;因此產生了AVL樹&#xff0c…

《 C語言中的變長數組:靈活而強大的特性》

&#x1f680;個人主頁&#xff1a;BabyZZの秘密日記 &#x1f4d6;收入專欄&#xff1a;C語言 &#x1f30d;文章目入 一、變長數組的定義二、變長數組的優勢三、變長數組的使用示例示例1&#xff1a;動態輸入數組大小示例2&#xff1a;變長數組在函數中的應用 四、變長數組的…

【微服務】基礎概念

1.什么是微服務 微服務其實就是一種架構風格&#xff0c;他提倡我們在開發的時候&#xff0c;一個應用應該是一組小型服務而組成的&#xff0c;每一個服務都運行在自己的進程中&#xff0c;每一個小服務都通過HTTP的方式進行互通。他更加強調服務的徹底拆分。他并不是僅局限于…

Linux make與makefile 項目自動化構建工具

本文章將對make與makefile進行一些基礎的講解。 假設我們要建造一座房子&#xff0c;建造過程涉及很多步驟&#xff0c;比如打地基、砌墻、安裝門窗、粉刷墻壁等。每個步驟都有先后順序&#xff0c;并且有些步驟可能依賴于其他步驟的完成。比如&#xff0c;你必須先打好地基才…