Matplotlib - 帶狀盒圖



通常,“帶狀盒圖”是一種圖形表示,用於視覺化跨不同類別或組的資料分佈。術語“帶狀盒圖”指的是一種特定型別的圖表,以視覺上吸引人且資訊豐富的方式顯示這些分佈。當您有多個類別或組並希望比較跨這些類別的變數的分佈時,它特別有用。

在帶狀盒圖中 -

  • 每個類別或組通常在 x 軸上表示。

  • y 軸通常表示數值變數的範圍或分佈。

  • 每個“帶狀”對應於特定類別或組內數值變數的分佈。

可以對帶狀進行陰影或著色以指示每個類別內分佈的密度或強度。這使得能夠輕鬆比較跨不同類別的分佈。

Ribbon Box

在這裡,我們建立了一個簡單的帶狀盒圖,其中 x 軸上有三個類別(類別 1、類別 2、類別 3),以及它們在 y 軸上相應的數值分佈。我們對帶狀盒進行陰影以指示每個類別內分佈的強度。

Matplotlib 中的帶狀盒圖

在 Matplotlib 中,“帶狀盒圖”是一種視覺表示,用於顯示跨不同類別或組的數值變數的分佈。雖然 matplotlib 沒有建立帶狀盒圖的特定函式,但您可以使用其他可用的技術,例如 -

  • 使用 matplotlib 的 plot() 函式為每個類別或組繪製中心線。這條線表示每個類別內資料的集中趨勢,例如平均值或中位數。

  • 使用 fill_between 函式填充兩條曲線之間的區域,其中一條曲線表示帶狀的上邊界,另一條曲線表示下邊界。

  • 根據需要自定義圖表的顯示,例如新增標籤、標題、圖例、網格線等。

帶有置信區間的帶狀盒圖

在 matplotlib 中,帶有置信區間的簡單帶狀盒圖是一種圖形表示,用於顯示資料集的集中趨勢以及圍繞該中心值的誤差範圍。

它就像繪製某物的平均值(例如每日溫度)並在其周圍陰影一個區域以顯示由於誤差導致實際值可能變化的程度。

示例

在以下示例中,我們正在建立一個帶狀盒圖,使用 matplotlib 的 plot() 和 fill_between() 函式分別顯示正弦波的集中趨勢和置信區間(誤差範圍) -

import matplotlib.pyplot as plt
import numpy as np

# Generating data
x = np.linspace(0, 10, 100)
y_mean = np.sin(x)
# Standard deviation
y_std = 0.1   

# Plotting the central line
plt.plot(x, y_mean, color='blue', label='Mean')

# Plotting the shaded area representing the uncertainty (confidence interval)
plt.fill_between(x, y_mean - y_std, y_mean + y_std, color='blue', alpha=0.2, label='Uncertainty')

plt.xlabel('X')
plt.ylabel('Y')
plt.title('Simple Ribbon Box Plot with Confidence Interval')
plt.legend()
plt.grid(True)
plt.show()

輸出

以下是上述程式碼的輸出 -

Simple Ribbon Box Plot

多個帶狀盒圖

在 Matplotlib 中,多個帶狀盒圖是一種使用同一圖中的帶狀盒圖比較多個數據集分佈的方法。每個帶狀盒圖表示不同資料集的離散程度和集中趨勢,便於在它們之間進行比較。

示例

在這裡,我們使用 matplotlib 生成多個帶狀盒圖,使用不同的顏色來表示兩個正弦波和餘弦波及其誤差帶 -

import matplotlib.pyplot as plt
import numpy as np

# Generating data
x = np.linspace(0, 10, 100)
y_means = [np.sin(x), np.cos(x)]
# Standard deviations
y_stds = [0.1, 0.15] 
colors = ['blue', 'green']

# Plotting multiple ribbon box plots with different colors
for y_mean, y_std, color in zip(y_means, y_stds, colors):
   plt.plot(x, y_mean, color=color, label='Mean', alpha=0.7)
   plt.fill_between(x, y_mean - y_std, y_mean + y_std, color=color, alpha=0.2)

plt.xlabel('X')
plt.ylabel('Y')
plt.title('Multiple Ribbon Box Plots with Different Colors')
plt.legend()
plt.grid(True)
plt.show()

輸出

執行上述程式碼後,我們將獲得以下輸出 -

Multiple Ribbon Box Plots

堆疊帶狀盒圖

在 Matplotlib 中,堆疊帶狀盒圖是一種圖形表示,用於比較多個數據集的分佈,同時顯示所有資料集的組合分佈。

在堆疊帶狀盒圖中,每個資料集都由自己的帶狀盒圖表示,就像在多個帶狀盒圖中一樣。但是,它們不是並排顯示,而是垂直堆疊在一起。這種堆疊允許直接比較每個資料集的分佈,同時還顯示它們組合時對整體分佈的貢獻。

示例

現在,我們正在繪製一個堆疊帶狀盒圖,將正弦波和餘弦波的分佈堆疊起來,以使用 matplotlib 比較它們在 x 軸上的變化 -

import matplotlib.pyplot as plt
import numpy as np

# Generating example data
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# Plotting stacked ribbon box plot
plt.plot(x, y1, color='blue', label='Dataset 1')
plt.fill_between(x, y1, color='blue', alpha=0.2)
plt.plot(x, y2, color='green', label='Dataset 2')
plt.fill_between(x, y2, color='green', alpha=0.2)

plt.xlabel('X')
plt.ylabel('Y')
plt.title('Stacked Ribbon Box Plot')
plt.legend()
plt.grid(True)
plt.show()

輸出

執行上述程式碼後,我們將獲得以下輸出 -

Stacked Ribbon Box Plot

水平帶狀盒圖

Matplotlib 中的水平帶狀盒圖是一種圖形表示,它使用帶狀盒在水平軸上顯示資料集的分佈。

在水平帶狀盒圖中,資料集的值被分組到類別或箱中,並且對於每個類別,都會水平繪製一個帶狀盒。每個盒子的長度表示該類別內值的範圍,而沿水平軸的位置表示類別本身。

示例

在以下示例中,我們正在建立一個水平帶狀盒圖,以使用 matplotlib 表示 y 軸上的類別及其相應的平均值和誤差範圍 -

import matplotlib.pyplot as plt
import numpy as np

# Generating data
y = np.arange(1, 6)
x_means = [5, 7, 6, 8, 9]
x_stds = [0.5, 0.3, 0.4, 0.2, 0.6]

# Plotting horizontal ribbon box plot
plt.plot(x_means, y, color='blue', label='Mean', linestyle='none', marker='o')
plt.fill_betweenx(y, np.subtract(x_means, x_stds), np.add(x_means, x_stds), color='blue', alpha=0.2) # Fixing this line

plt.xlabel('X')
plt.ylabel('Y')
plt.title('Horizontal Ribbon Box Plot')
plt.legend()
plt.grid(True)
plt.show()

輸出

執行上述程式碼後,我們將獲得以下輸出 -

Horizontal Ribbon Box Plot
廣告