【Python】數據可視化之分類圖

目錄

條形圖

箱形圖

散點圖

分簇散點圖

小提琴

分簇小提琴


條形圖

條形圖是一種直觀的圖表形式,它通過不同長度的矩形條(即“條形”)來展示數值變量的中心趨勢估計值,其中每個矩形的高度直接對應于該組數據的某個中心量度(如均值、中位數等)。此外,為了向觀眾傳達關于這些中心趨勢估計值可靠性的額外信息,條形圖上常附有誤差線。這些誤差線提供了關于估計值周圍不確定性的視覺指示,幫助理解數據的變異性或抽樣誤差可能如何影響這些中心趨勢的估計。

也可以表示標準誤差(Standard Error, SE)、置信區間(Confidence Interval, CI)或其他統計度量,它們均反映了估計值的不確定性范圍。例如,一個95%的置信區間誤差線會展示一個范圍,該范圍在多次重復相同研究的情況下,有95%的機會包含真實的中心趨勢值。這樣的表示不僅展示了數據的中心位置,還通過誤差線直觀地揭示了圍繞這一中心位置的不確定性程度。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
# 初始化畫布大小
f, ax = plt.subplots(figsize=(15, 15))
# 繪出總的交通事故
sns.set_color_codes("pastel")
# 繪制條形圖,x軸為alcohol,y軸為abbrev,數據為crashes,標簽為Total,顏色為r
sns.barplot(x="total", y="abbrev", data=crashes, label="Total", color="r")
# 設置顏色代碼
sns.set_color_codes("bright")
# 繪制條形圖,x軸為alcohol,y軸為abbrev,數據為crashes,標簽為Alcohol-involved,顏色為r
sns.barplot(x="alcohol", y="abbrev", data=crashes, label="Alcohol-involved", color="r")
# 設置圖例,每行2列,位置在右下角,邊框顯示
ax.legend(ncol=2, loc="lower right", frameon=True)
# 設置x軸范圍,y軸標簽為空,x軸標簽為“Automobile collisions per billion miles”
ax.set(xlim=(0, 24), ylabel="",xlabel="Automobile collisions per billion miles")

箱形圖

箱形圖,亦稱為盒須圖、盒式圖或箱線圖,是一種在統計學和數據可視化領域廣泛應用的圖形工具,用于直觀地展示和比較一組或多組數據的分布特征。通過緊湊而富有信息量的方式,將數據的最大值、最小值、中位數、以及上四分位數和下四分位數等重要統計量呈現在簡潔的圖形之中。廣泛應用于各種領域,如質量控制、經濟學、生物學、醫學研究等,幫助研究人員和分析師快速識別數據中的模式、異常值和分布特征,為進一步的統計分析和決策制定提供有力支持。

  • 中位數(Median):箱形圖中的中心線代表數據集的中位數,即將數據集排序后位于中間的數值,反映了數據的中心趨勢。

  • 四分位數(Quartiles)

    • 下四分位數(Q1):位于數據集25%處的數值,即至少有25%的數據小于或等于這個值。
    • 上四分位數(Q3):位于數據集75%處的數值,即至少有75%的數據小于或等于這個值。
      四分位數與中位數一起,將數據集分為四個等量的部分,反映了數據的分布范圍。
  • 箱體(Box):由下四分位數和上四分位數構成的矩形區域,表示數據的主要集中范圍。箱體的高度反映了數據的中間50%的離散程度。

  • 須(Whiskers):從箱體的上下兩端延伸出的線段,通常表示數據的最小值和最大值(或根據特定規則調整后的值,如使用1.5倍四分位距來排除異常值)。須的長度顯示了數據分布的極端值范圍。

  • 異常值(Outliers):通常定義為超出須范圍的數據點,以單獨的點或符號表示,它們可能由于測量錯誤、數據錄入錯誤或極端事件而產生。

# 加載tips數據集
tips = sns.load_dataset("tips")
# 繪制嵌套的箱線圖,按日期和時間顯示賬單
# x軸為日期,y軸為賬單,hue為是否吸煙,顏色分別為m和g
sns.boxplot(x="day", y="total_bill", hue="smoker", palette=["r", "b"], data=tips)
# 去除圖表的邊框,偏移量為10,去除多余的邊框
sns.despine(offset=10, trim=True)

散點圖

點圖作為一種數據可視化工具,核心在于展示數值變量在不同分類級別上的中心趨勢估計。通過點的位置,能夠直觀地把握各分類下的數值分布情況。此外,點圖還巧妙地運用誤差線來標示這些中心趨勢估計的不確定性范圍,提供了更為全面的數據解讀視角。與條形圖相比,點圖在聚焦于分類變量不同級別之間的比較時往往更具優勢。它們不僅能夠清晰地展示各分類下的數值水平,還能夠在有限的空間內容納更多的信息點,適合于展示較為復雜的數據集。

點圖在展現交互作用方面表現出色。它們能夠直觀地揭示一個分類變量的各個層次如何隨著第二個分類變量的變化而變化,這種變化關系通過點圖中點的位置及其連線得以生動展現。特別是當使用不同色調來區分不同組別時,連接相同色調等級點的線條能夠清晰地顯示出斜率的變化,從而更容易地捕捉到不同組別間交互作用的微妙差異。

import pandas as pd
import seaborn as sns
# 設置圖形風格
sns.set(style="ticks")
# 加載iris數據集
iris = sns.load_dataset("iris")
# 將數據格式調整
iris = pd.melt(iris, "species", var_name="measurement")
# 初始化圖形
f, ax = plt.subplots()
# 移除圖形的底部和左側的邊框
sns.despine(bottom=True, left=True)
# 繪制條形圖
# 使用seaborn庫中的stripplot函數繪制散點圖
# x參數指定x軸的數據,y參數指定y軸的數據,hue參數指定顏色映射,data參數指定數據集
# dodge參數指定是否在x軸上分散,jitter參數指定是否在y軸上抖動,alpha參數指定透明度,zorder參數指定繪圖順序
sns.stripplot(x="value", y="measurement", hue="species",data=iris, dodge=True, jitter=True,alpha=.5, zorder=1)
# 顯示條件平均數
# 使用seaborn庫中的pointplot函數繪制點圖
# x參數指定x軸的數據,y參數指定y軸的數據,hue參數指定顏色映射,data參數指定數據集
# dodge參數指定點之間的間隔,join參數指定是否連接點,palette參數指定顏色調色板
# markers參數指定點的形狀,scale參數指定點的大小,ci參數指定置信區間
sns.pointplot(x="value", y="measurement", hue="species",data=iris, dodge=.532, join=False, palette="dark",markers="s", scale=1, ci=True)
# 圖例設置
handles, labels = ax.get_legend_handles_labels()
# 設置圖例的位置和樣式
# 添加圖例,handles為圖例的句柄,labels為圖例的標簽,title為圖例的標題
# handletextpad為圖例文本與句柄之間的距離,columnspacing為圖例列之間的距離
# loc為圖例的位置,ncol為圖例的列數,frameon為是否顯示圖例的邊框
ax.legend(handles[3:], labels[3:], title="species",handletextpad=0.05, columnspacing=0.05,loc="upper left", ncol=1, frameon=True)

分簇散點圖

分簇散點圖Swarmplot,是一種用于展示分類變量和數值變量之間關系的數據可視化圖表類型,特別適用于探索多個分類級別下數據的分布情況,簡單說就是數據點不重疊的分類散點圖swarmplot()作為可視化的工具,不僅能夠單獨使用來展現數據的分類特征,還常作為箱形圖(Boxplot)或小提琴圖(Violin Plot)的補充手段。箱形圖雖然能概括數據的四分位數范圍,但無法展示所有具體數據點;小提琴圖則通過密度估計展示了數據分布的形狀,但在數據點較少時可能不夠直觀。而Swarmplot則巧妙地填補了這一空白,它直接展示所有數據點,同時通過其獨特的布局方式保留了數據的基本分布特征,使得用戶能夠同時獲得宏觀與微觀的數據洞察。

import pandas as pd
import seaborn as sns
# 設置繪圖風格和調色板
sns.set(style="whitegrid", palette="bright")
# 加載數據集
iris = sns.load_dataset("iris")
# 處理數據集,將species列作為索引,var_name為measurement
iris = pd.melt(iris, "species", var_name="measurement")
# 繪制分類散點圖,x軸為measurement,y軸為value,hue為species,調色板為b、c、y
sns.swarmplot(x="measurement", y="value", hue="species", palette=["b", "c", "y"], data=iris)

小提琴

小提琴圖(Violin Plot)是一種高級的數據可視化工具,它巧妙地展示了定量數據在單個或多個分類變量不同層級上的分布情況,并允許對這些分布進行直觀的比較。與箱形圖(Box-plot)不同,小提琴圖不僅僅依賴于幾個關鍵統計量(如中位數、四分位數)來描繪數據分布,而是采用了更為細膩的方法——核密度估計(Kernel Density Estimation, KDE),來描繪數據的潛在分布形態。

核密度估計是一種非參數方法,用于估計隨機變量的概率密度函數。在小提琴圖中,這一技術被用來繪制每個分類層級下數據的“密度輪廓”,即數據點在不同值域上的相對頻率或概率分布。這種表示方式不僅展示了數據的中心趨勢(如中位數附近的密集區域),還揭示了數據的整體形狀、對稱性、多峰性以及可能的異常值區域,從而提供了比箱形圖更為豐富和細致的數據分布信息。

小提琴圖的優勢在于其能夠同時展示數據的分布形態和密度信息,使得觀察者能夠更全面地理解數據在不同分類層級下的變異性和相似性。此外,小提琴圖還常常與箱形圖結合使用,即在每個小提琴圖內部繪制對應的箱形圖組件(如中位數線、四分位數范圍等),以提供額外的統計量參考和異常值標識。

import numpy as np
import seaborn as sns
# 生成模擬數據集
# 創建一個隨機數生成器,種子為0
rs = np.random.RandomState(0)
# 定義樣本數量和特征數量
n, p = 40, 8
# 生成一個40行8列的隨機正態分布矩陣,均值為0,標準差為2
d = rs.normal(0, 2, (n, p))
# 對矩陣中的每個元素進行操作,加上-5乘以特征索引再加10
d += np.log(np.arange(1, p + 1)) * -5 + 10
# 使用cubehelix獲得自定義的順序調色板
pal = sns.cubehelix_palette(p, rot=-.8, dark=.6)
# 使用小提琴圖和圓點展現每種分布
sns.violinplot(data=d, palette=pal, inner="point")

分簇小提琴

分簇小提琴圖(Clustered Violin Plot)是一種特殊的小提琴圖變種,它結合了小提琴圖的分布展示能力與分簇圖的比較功能,用于在同一圖表中比較多個組別或分類變量下的數據分布情況。其通過并排展示多個小提琴圖(每個小提琴代表一個組別或類別),來同時比較不同組別下定量數據的分布形態和密度。每個小提琴的內部結構與標準小提琴圖相同,包括核密度估計曲線、可能的箱線圖元素(如中位數、四分位數等),以及表示數據密度的寬度變化。

# 導入seaborn庫
import seaborn as sns
# 加載tips數據集
tips = sns.load_dataset("tips")
# 繪制一個嵌套的小提琴圖,并拆分小提琴以便于比較
# 使用seaborn庫繪制小提琴圖
# x軸為day,y軸為total_bill,根據smoker進行分組
# split參數為True,表示將不同組的數據分開繪制
# inner參數為"quart",表示在小提琴內部繪制四分位數
# palette參數為字典,表示不同組的數據使用不同的顏色
# data參數為tips,表示使用tips數據集
sns.violinplot(x="day", y="total_bill", hue="smoker",split=True, inner="quart",palette={"Yes": "g", "No": "y"},data=tips)
# 去除左邊框
sns.despine(left=True)

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

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

相關文章

RabbitMQ模型詳解與常見問題

項目demo地址:https://github.com/tian-qingzhao/rabbitmq-demo 一、RabbitMQ組件概念 1.1 Server:接收客戶端的連接,實現AMQP實體服務。 1.2 Connection:連接 應用程序與Server的網絡連接,TCP連接。 1.3 Channel&…

網絡:相比于HTTP,HTTPS協議到底安全在哪?

網絡:相比于HTTP,HTTPS協議到底安全在哪? 我們知道HTTPS也是一種應用層協議,它在HTTP的基礎上有一層加密,因為HTTP的數據傳輸都是以明文方式傳輸的,所以加密主要是為了防止數據在傳輸的時候被篡改 今天我…

AI 基礎設施新范式,百度百舸 5.0 技術深度解析

本文整理自 2025 年 8 月 29 日百度云智大會 —— AI 算力平臺專題論壇,百度智能云 AI 計算首席科學家王雁鵬的同名主題演講。大家下午好!昨天在主論壇,我們正式發布了百度百舸 AI 計算平臺 5.0,并展示了多項亮眼的性能數據。今天…

IO進程線程;多線程;線程互斥同步;互斥鎖;無名信號量;條件變量;0905

思維導圖多線程打印ABC運用無名面量 實現進程同步#include<myhead.h> //定義 無名信號量 sem_t sem1; sem_t sem2; sem_t sem3; //線程1 void* task1(void *arg) {while(1){sem_wait(&sem1);printf("A");fflush(stdout);sleep(1);sem_post(&sem2);} } …

固高 GTS-800 運動控制卡完全使用指南:從硬件部署到高階應用

固高 GTS-800 系列運動控制卡作為中端工業控制領域的標桿產品,以其 8-16 軸同步控制能力、豐富的插補功能和穩定的性能,廣泛應用于激光加工、PCB 制造、精密裝配等自動化設備中。本文將系統講解 GTS-800 的硬件架構、開發環境搭建、核心功能實現及工程實踐技巧,幫助工程師快…

STM32F103_Bootloader程序開發15 - 從Keil到vscode + EIDE + GCC的遷移實踐

導言 STM32 - Embedded IDE - GCC - 如何在工程中生成.bin格式固件 STM32 - Embedded IDE - GCC - 使用 GCC 鏈接腳本限制 Flash 區域 STM32 - Embedded IDE - GCC - 如何在工程中定義一段 NoInit RAM 內存 STM32 - Embedded IDE - GCC - 如何將編譯得到的.bin固件添加CRC32校驗…

HTTP協議——理解相關概念、模擬實現瀏覽器訪問自定義服務器

文章目錄HTTP協議理解相關概念HTTP相關背景知識認識URLHTTP協議在網絡通信的宏觀認識urlencode & urldecodeHTTP請求和應答的格式模擬實現瀏覽器訪問自定義服務器關于http requesthttp request的請求行——URI使用瀏覽器完成靜態資源的訪問常用的報頭屬性http response狀態…

【服務器】英偉達M40顯卡風冷方案心得

在之前的博文中&#xff0c;博主說到最近準備自己組裝一臺服務器&#xff0c;主要用于有限元仿真&#xff0c;其次兼顧一部分AI機器學習的工作&#xff0c;于是博主就入手了一張英偉達Tesla M40的12G顯卡GPU。本來博主也糾結過是買M40還是M60&#xff0c;后來在網上看到說M60看…

Java中的鎖升級機制

目錄 核心思想 Java對象頭&#xff08;Object Header&#xff09;與Mark Word 鎖升級的詳細步驟 1. 無鎖&#xff08;No Lock&#xff09; 2. 偏向鎖&#xff08;Biased Locking&#xff09; 3. 輕量級鎖&#xff08;Lightweight Lock&#xff09; 4. 重量級鎖&#xff…

Scikit-learn Python機器學習 - 特征預處理 - 標準化 (Standardization):StandardScaler

鋒哥原創的Scikit-learn Python機器學習視頻教程&#xff1a; 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識&#xff0c;包括機器學習概述&#xff0c;特征工程(數據…

windows下wsl2 ubuntu開發配置

配置環境變量# 設置方式 命令/文件 生效范圍 適用場景 # 臨時 export FORCE_UNSAFE_CONFIGURE1 當前終端 臨時編譯軟件 # 用戶級永久 ~/.bashrc或~/.profile 當前用戶 長期使用&#xff08;單用戶&#xff09; # 系統級永久 /etc/environment或/…

網絡編程 05:UDP 連接,UDP 與 TCP 的區別,實現 UDP 消息發送和接收,通過 URL 下載資源

一、概述 記錄時間 [2025-09-02] 前置文章&#xff1a; 網絡編程 01&#xff1a;計算機網絡概述&#xff0c;網絡的作用&#xff0c;網絡通信的要素&#xff0c;以及網絡通信協議與分層模型 網絡編程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分類&#xff0c;通過 …

告別線纜束縛!AirDroid Cast 多端投屏,讓分享更自由

AirDroid Cast 是一款功能強大的跨平臺投屏應用&#xff0c;能夠輕松實現手機、電腦之間以及手機之間的屏幕共享與控制。無論是工作演示、在線教學還是游戲直播&#xff0c;AirDroid Cast 都能提供流暢穩定的投屏體驗。 1. 下載與安裝 您可以通過以下鏈接下載 AirDroid Cast&…

從零開始學大模型之大模型訓練流程實踐

大模型訓練流程實踐 本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型開發 學習視頻/籽料/面試題 都在這>>Github<< >>Gitee<< 6.1 模型預訓練 在上一章&#xff0c;我們逐步拆解了 LLM 的模型結構及訓練過程&#xff0c;從零手…

一文從零部署vLLM+qwen0.5b(mac本地版,不可以實操GPU單元)

第一步&#xff1a;下載anaconda for mac https://zhuanlan.zhihu.com/p/350828057 知乎保姆級教程 https://www.anaconda.com/docs/getting-started/anaconda/install#macos-linux-installation 下載地址 第二步&#xff1a;部署vllm的虛擬環境 https://www.53ai.com/news/Op…

Go語言Range用法全解析

引言Go 語言中的 range 關鍵字是集合遍歷的核心語法結構&#xff0c;它提供了一種高效且類型安全的方式來迭代各種數據結構。range 的設計完美體現了 Go 語言的工程哲學 - 通過最小化的語法提供最大化的功能。標準庫中的許多關鍵組件&#xff08;如 sync.Map、bufio.Scanner 等…

mysql進階語法(視圖)

1、視圖概念 是從一個或多個表中導出來的表&#xff0c;它是一種虛擬存在的表&#xff0c;表的結構和數據都依賴于基本表 應用場景&#xff1a; 多個地方用到同樣的查詢結果該查詢結果用到復雜的select語句 視圖優點&#xff1a; 簡化查詢語句&#xff1a;簡化用戶的查詢操作&a…

編程范式:提升抽象能力的思維工具

這是一個編程中的核心概念&#xff0c;它代表了編寫程序的一套基本風格、方法論和哲學。學習不同的編程范式&#xff0c;就像學習用不同的工具和思維方式來解決問題&#xff0c;能極大地提升你作為程序員的抽象能力和解決問題的能力。一、什么是編程范式&#xff1f;編程范式 是…

阿里云-基于通義靈碼實現高效 AI 編碼 | 1 | 在 Visual Studio Code 中安裝和使用靈碼

文章目錄一、在 Visual Studio Code 中安裝和使用靈碼1.1 準備工作1.2 在 Visual Studio Code 安裝通義靈碼1.3 登錄阿里云賬號免費個人運維知識庫&#xff0c;歡迎您的訂閱&#xff1a;literator_ray.flowus.cn 一、在 Visual Studio Code 中安裝和使用靈碼 本安裝步驟適用于…

WordPress搭建個人網站(Linux版)

WordPress搭建個人網站&#xff0c;使用Linux系統。我需要詳細說明整個過程&#xff0c;包括環境準備、安裝步驟、配置優化等。首先&#xff0c;用戶可能對Linux不太熟悉&#xff0c;所以需要從基礎開始&#xff0c;比如選擇合適的Linux發行版&#xff0c;如Ubuntu或CentOS。然…