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
广告