如何在 Seaborn 中使用資料點建立小提琴圖?
在資料分析和視覺化中,許多型別的圖表用於以簡潔且有意義的方式傳達資訊。其中一種流行的圖表型別是小提琴圖,它可用於視覺化不同類別或組的數值變數的分佈。小提琴圖類似於箱線圖,但它透過在箱線圖頂部顯示密度圖來提供有關資料分佈的更多資訊。在本教程中,我們將學習如何使用我們自己建立的資料集在 Seaborn 中建立帶有資料點的小提琴圖。
要在 Seaborn 中建立小提琴圖,我們必須匯入必要的庫,例如 Seaborn、Matplotlib 和 Pandas。Seaborn 用於建立圖表,Matplotlib 用於自定義圖表,Pandas 用於儲存和處理資料。
語法
要建立小提琴圖,您需要遵循以下語法:
# Create violin plot sns.violinplot(data=data, x="x_variable", y="y_variable", hue="categorical_variable", split=True) # Show the plot plt.show()
我們呼叫 violinplot() 函式來建立小提琴圖。我們傳入我們的資料,指定要繪製的 x 和 y 變數以及用於根據分類變數為小提琴著色的 hue 變數。split 引數設定為 True 以按類別拆分小提琴。最後,我們呼叫 show() 函式來顯示圖表。
示例
在此示例中,我們將建立一個包含以下變數的資料集:類別、值 1 和值 2。我們將建立兩個類別,類別 A 和類別 B,每個類別包含 100 個值。這些值將使用 Numpy 庫隨機生成。
現在我們已經建立了資料集,我們可以使用 Seaborn 來建立小提琴圖。我們將使用 violinplot() 函式來建立圖表。violinplot() 函式採用以下引數:
x − 要繪製的變數的列名或索引。
y − 用於對資料進行分組的變數的列名或索引。
data − 包含要繪製資料的 DataFrame。
inner − 要在小提琴圖內顯示的圖表型別。預設值為“box”,但我們可以將其更改為“points”以在小提琴圖內顯示資料點。
palette − 要用於不同類別或組的顏色調色盤。
以下程式碼將建立帶有資料點的小提琴圖:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Create a dataset with two categories and 100 values in each category
category_a = np.random.normal(0, 1, 100)
category_b = np.random.normal(2, 1, 100)
data = pd.DataFrame({'Category': ['A'] * 100 + ['B'] * 100, 'Value 1': np.concatenate((category_a, category_b)), 'Value 2': np.concatenate((category_b, category_a))})
# Create a Violin plot with data points
sns.violinplot(x='Category', y='Value 1', data=data, inner='points', palette='Set2')
# Customize the plot
plt.title('Violin Plot with Data Points')
plt.xlabel('Category')
plt.ylabel('Value 1')
# Display the plot
plt.show()
輸出

示例
建立了一個考試成績的資料集,它包含三個組(A 組、B 組和 C 組),每個組包含 10 個分數。考試成績在程式碼中是硬編碼的,與前面示例中的隨機資料不同。接下來,使用 pd.DataFrame 函式將資料集轉換為 Pandas 資料幀。
之後,使用 subplots 函式建立圖形和軸物件。然後使用軸物件的 violinplot 函式建立小提琴圖。showmedians 引數設定為 True 以在圖上顯示每個組的中位數。
x 軸刻度和標籤設定為使用 set_xticks 和 set_xticklabels 函式顯示組名,並使用 set_xlabel 和 set_ylabel 函式設定 x 和 y 軸標籤。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# create a dataset of exam scores for three groups of students
data = {'Group A': [75, 80, 85, 90, 70, 65, 90, 85, 80, 75], 'Group B': [80, 85, 90, 95, 75, 70, 95, 90, 85, 80], 'Group C': [85, 90, 95, 100, 80, 75, 100, 95, 90, 85], }
# convert the data to a pandas dataframe
df = pd.DataFrame(data)
# plot the violin plot using matplotlib
fig, ax = plt.subplots()
ax.violinplot(df.values, showmedians=True)
ax.set_xticks(np.arange(1, len(df.columns)+1))
ax.set_xticklabels(df.columns)
ax.set_xlabel('Groups')
ax.set_ylabel('Exam Scores')
plt.show()
輸出

結論
我們討論了小提琴圖如何類似於箱線圖,但顯示了更詳細的資料分佈檢視。我們瞭解到 Seaborn 是一個更高級別的庫,它提供了更高階和美觀的統計圖形,而 Matplotlib 是一個更低級別的庫,它提供了對圖表細節的更多控制。最後,我們看到小提琴圖是比較不同組或類別之間資料分佈的有效方法,使其成為探索性資料分析的寶貴工具。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP