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

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

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

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

為什么使用Swarm Plots?

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

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

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

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

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

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

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

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

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

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

對于本文,讓我們創(chuàng)建一個表示多個類別和數(shù)值數(shù)據(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:散點圖準備

使用Matplotlib的散點函數(shù)繪制各個點。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()

輸出

在這里插入圖片描述

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

步驟4:添加抖動以避免重疊

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

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用于稍微移動每個類別中的點的x軸位置。這樣可以防止重疊,并使點沿分類軸均勻分布。

自定義蜂群圖

1. 使用注釋增強蜂群圖

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

# 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ū)分類別,可以使用散點圖中的c參數(shù)為每個類別添加不同的顏色。

在這里插入圖片描述

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

蜂群圖可以與其他類型的圖(如箱線圖或小提琴圖)結(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ù)據(jù)縮放:確保x軸正確縮放,以適應(yīng)抖動,而不會過度重疊。
  • 抖動靈敏度:您添加的抖動量應(yīng)根據(jù)數(shù)據(jù)的密度進行調(diào)整。太多的抖動會使圖形混亂。
  • 小心使用顏色和標記:顏色和形狀的選擇應(yīng)避免混淆,特別是在具有許多類別的復(fù)雜圖中。

總結(jié)

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Django實現(xiàn)前臺上傳并顯示圖片功能

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

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

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

    Python解析網(wǎng)頁源代碼中的115網(wǎng)盤鏈接實例

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

    使用Python計算隱含波動率

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

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

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

最新評論