欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用Matplotlib繪制Swarm Plot(蜂群圖)的代碼步驟

 更新時(shí)間:2025年04月04日 08:34:06   作者:python收藏家  
蜂群圖(Swarm Plot)是一種用于可視化分類數(shù)據(jù)分布的圖表類型,它將數(shù)據(jù)點(diǎn)沿著一個(gè)或多個(gè)分類變量輕微地分散,以避免它們之間的重疊,從而更好地顯示數(shù)據(jù)的分布密度和分布趨勢(shì),本文給大家介紹了Python使用Matplotlib繪制Swarm Plot的代碼步驟,需要的朋友可以參考下

Swarm Plot(蜂群圖)是一種數(shù)據(jù)可視化圖表,它用于展示分類數(shù)據(jù)的分布情況。這種圖表通過(guò)將數(shù)據(jù)點(diǎn)沿著一個(gè)或多個(gè)分類變量輕微地分散,以避免它們之間的重疊,從而更好地顯示數(shù)據(jù)的分布密度和分布趨勢(shì)。Swarm Plot特別適用于較小的數(shù)據(jù)集。

為什么使用Swarm Plots?

蜂群圖在以下情況下非常有利:

  • 可視化類別內(nèi)的點(diǎn)分布。
  • 識(shí)別數(shù)據(jù)中的模式或離群值。
  • 通過(guò)顯示單個(gè)數(shù)據(jù)點(diǎn)來(lái)補(bǔ)充其他圖,如箱形圖或小提琴圖。

但是,它們可能會(huì)因大型數(shù)據(jù)集而變得混亂,并且可能不適合涉及多個(gè)變量的復(fù)雜關(guān)系。

使用Matplotlib創(chuàng)建Swarm Plots

雖然Seaborn提供了一種簡(jiǎn)單的方法來(lái)創(chuàng)建蜂群圖,但Matplotlib沒(méi)有用于這種類型圖的內(nèi)置函數(shù)。但是,您可以通過(guò)編寫(xiě)自定義函數(shù)來(lái)創(chuàng)建類似的效果。

要在Matplotlib中創(chuàng)建蜂群圖,關(guān)鍵是操縱數(shù)據(jù)點(diǎn)的x軸位置,使它們水平間隔開(kāi),避免重疊,同時(shí)保持它們的分類分組。

步驟1:導(dǎo)入所需的庫(kù)

首先導(dǎo)入必要的庫(kù),例如Matplotlib、NumPy和Pandas以進(jìn)行數(shù)據(jù)操作。以下是如何使用Matplotlib創(chuàng)建蜂群圖的示例:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

步驟2:生成示例數(shù)據(jù)

對(duì)于本文,讓我們創(chuàng)建一個(gè)表示多個(gè)類別和數(shù)值數(shù)據(jù)的隨機(jī)數(shù)據(jù)集。您可以將其替換為您想要可視化的任何數(shù)據(jù)集。

# Create a sample dataset
np.random.seed(0)
categories = ['A', 'B', 'C']
data = {
    'Category': np.random.choice(categories, size=150),
    'Value': np.random.randn(150)
}
df = pd.DataFrame(data)

步驟3:散點(diǎn)圖準(zhǔn)備

使用Matplotlib的散點(diǎn)函數(shù)繪制各個(gè)點(diǎn)。y軸表示值,而x軸表示類別。

# Create a basic scatter plot
plt.scatter(df['Category'], df['Value'])
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Basic Scatter Plot')
plt.show()

輸出

在這里插入圖片描述

在這個(gè)階段,點(diǎn)將重疊,特別是在密集區(qū)域。下一步是將點(diǎn)隔開(kāi),以獲得更清晰的群體圖效果。

步驟4:添加抖動(dòng)以避免重疊

為了避免數(shù)據(jù)點(diǎn)重疊,您可以向x軸位置添加抖動(dòng)(一個(gè)小的隨機(jī)變化)。這將模擬群集圖的效果,其中點(diǎn)水平分布。

def add_jitter(x, scale=0.05):
    return x + np.random.uniform(-scale, scale, size=len(x))

df['Jittered_Category'] = df['Category'].apply(lambda x: categories.index(x))
df['Jittered_Category'] = add_jitter(df['Jittered_Category'])

# Create a scatter plot with jittered points
plt.scatter(df['Jittered_Category'], df['Value'], alpha=0.7)
plt.xticks(ticks=range(len(categories)), labels=categories)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Swarm Plot with Jittered Points')
plt.show()

在這里插入圖片描述

在這里,add_jitter用于稍微移動(dòng)每個(gè)類別中的點(diǎn)的x軸位置。這樣可以防止重疊,并使點(diǎn)沿分類軸均勻分布。

自定義蜂群圖

1. 使用注釋增強(qiáng)蜂群圖

您可以向蜂群圖添加文本注釋以突出顯示某些數(shù)據(jù)點(diǎn)。當(dāng)您想要指出特定的值或類別時(shí),這特別有用。注釋有助于強(qiáng)調(diào)特定的數(shù)據(jù)點(diǎn)并提供額外的上下文。

# Add annotations to the plot
plt.scatter(df['Jittered_Category'], df['Value'], s=50, alpha=0.6)
plt.xticks(ticks=range(len(categories)), labels=categories)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Swarm Plot with Annotations')

# Highlight a point
highlight = df.iloc[10]
plt.annotate('Highlighted Point', (highlight['Jittered_Category'], highlight['Value']),
             xytext=(10, 20), textcoords='offset points', arrowprops=dict(arrowstyle='->'))

plt.show()

在這里插入圖片描述

2. 為不同類別添加顏色

要區(qū)分類別,可以使用散點(diǎn)圖中的c參數(shù)為每個(gè)類別添加不同的顏色。

在這里插入圖片描述

將蜂群圖與其他圖類型疊加

蜂群圖可以與其他類型的圖(如箱線圖或小提琴圖)結(jié)合使用,以提供更全面的數(shù)據(jù)分布視圖。例如,您可以將群圖疊加在箱形圖上。

# Create a box plot
plt.boxplot([df[df['Category'] == cat]['Value'] for cat in categories], positions=range(len(categories)))

# Overlay the swarm plot
plt.scatter(df['Jittered_Category'], df['Value'], c=df['Color'], s=50, alpha=0.6)
plt.xticks(ticks=range(len(categories)), labels=categories)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Swarm Plot Overlayed on Box Plot')
plt.show()

在這里插入圖片描述

Tips和最佳實(shí)踐

  • 數(shù)據(jù)縮放:確保x軸正確縮放,以適應(yīng)抖動(dòng),而不會(huì)過(guò)度重疊。
  • 抖動(dòng)靈敏度:您添加的抖動(dòng)量應(yīng)根據(jù)數(shù)據(jù)的密度進(jìn)行調(diào)整。太多的抖動(dòng)會(huì)使圖形混亂。
  • 小心使用顏色和標(biāo)記:顏色和形狀的選擇應(yīng)避免混淆,特別是在具有許多類別的復(fù)雜圖中。

總結(jié)

在Matplotlib中創(chuàng)建蜂群圖需要手動(dòng)操作數(shù)據(jù)點(diǎn)的x軸位置以避免重疊。雖然像Seaborn這樣的庫(kù)簡(jiǎn)化了這個(gè)過(guò)程,但Matplotlib提供了根據(jù)特定需求定制蜂群圖的靈活性。通過(guò)添加抖動(dòng)、調(diào)整點(diǎn)大小和透明度以及使用顏色和標(biāo)記形狀,您可以創(chuàng)建有效且視覺(jué)上吸引人的蜂群圖。

以上就是Python使用Matplotlib繪制Swarm Plot(蜂群圖)的代碼步驟的詳細(xì)內(nèi)容,更多關(guān)于Python Matplotlib繪制Swarm Plot的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何安裝并在pycharm使用selenium的方法

    如何安裝并在pycharm使用selenium的方法

    這篇文章主要介紹了如何安裝并在pycharm使用selenium,本文給大家提到了selenium安裝并導(dǎo)入pycharm的教程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python常用函數(shù)random()函數(shù)詳解

    python常用函數(shù)random()函數(shù)詳解

    這篇文章主要介紹了python常用函數(shù)random()函數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • pyqt環(huán)境搭建教程

    pyqt環(huán)境搭建教程

    pyqt是一個(gè)用于創(chuàng)建GUI應(yīng)用程序的跨平臺(tái)工具包,它將python與qt庫(kù)融為一體,本文給大家分享pyqt環(huán)境搭建教程,感興趣的朋友一起看看吧
    2023-11-11
  • Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā))

    Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā))

    這篇文章主要介紹了Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā)),本文通過(guò)實(shí)例代碼效果展示截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Pandas數(shù)據(jù)處理庫(kù)畫(huà)圖與文件讀取使用示例

    Pandas數(shù)據(jù)處理庫(kù)畫(huà)圖與文件讀取使用示例

    這篇文章主要為大家介紹了Pandas數(shù)據(jù)處理庫(kù)畫(huà)圖與文件讀取使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Django實(shí)現(xiàn)前臺(tái)上傳并顯示圖片功能

    Django實(shí)現(xiàn)前臺(tái)上傳并顯示圖片功能

    這篇文章主要介紹了Django實(shí)現(xiàn)前臺(tái)上傳并顯示圖片功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python日期和時(shí)間戳的轉(zhuǎn)換的實(shí)現(xiàn)方式

    Python日期和時(shí)間戳的轉(zhuǎn)換的實(shí)現(xiàn)方式

    Python中日期和時(shí)間的處理涉及到time和datetime模塊,time模塊可實(shí)現(xiàn)時(shí)間戳與格式化時(shí)間字符串的轉(zhuǎn)換,而datetime模塊則提供更加直接易用的接口,本文詳細(xì)給大家介紹了Python日期和時(shí)間戳的轉(zhuǎn)換的實(shí)現(xiàn)方式,需要的朋友可以參考下
    2024-10-10
  • Python解析網(wǎng)頁(yè)源代碼中的115網(wǎng)盤(pán)鏈接實(shí)例

    Python解析網(wǎng)頁(yè)源代碼中的115網(wǎng)盤(pán)鏈接實(shí)例

    這篇文章主要介紹了Python解析網(wǎng)頁(yè)源代碼中的115網(wǎng)盤(pán)鏈接實(shí)例,主要采用了正則表達(dá)式re模塊來(lái)實(shí)現(xiàn)該功能,需要的朋友可以參考下
    2014-09-09
  • 使用Python計(jì)算隱含波動(dòng)率

    使用Python計(jì)算隱含波動(dòng)率

    隱含波動(dòng)率(Implied?Volatility)在金融領(lǐng)域是一個(gè)核心概念,用于描述市場(chǎng)對(duì)于未來(lái)資產(chǎn)價(jià)格波動(dòng)的預(yù)期程度,本文將詳細(xì)介紹如何使用Python計(jì)算隱含波動(dòng)率,需要的可以了解下
    2024-11-11
  • Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲(chóng)數(shù)據(jù)抽取

    Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲(chóng)數(shù)據(jù)抽取

    這篇文章主要介紹了Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲(chóng)數(shù)據(jù)抽取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論