在一张图中绘制多个箱线图

Plot several boxplots in one figure

我正在使用 python-3.x 我想在一个图中绘制多个箱线图,所有数据都来自一个 numpy 数组,该数组的形状是 (100, 301)

如果我使用下面的代码,它将把它们全部绘制出来(我将在一张图中有 301 个箱线图,这太多了)

fig, ax = plt.subplots()
ax.boxplot(my_data)
plt.show()

我不想绘制所有数据,我只想使用 for 循环或任何最有效的方法绘制 10、15 或 20(可变数量)数据。

例如,我想每 50 个数据绘制一次箱线图,这意味着我的图中将有 301 个左右的 6 个箱线图,我尝试使用 for 循环但没有成功

任何建议将不胜感激

您可以使用变量 step 使用索引绘制每 50 个数据点的图。要具有单独的箱形图并避免重叠,您可以使用 positions 参数指定单个箱形图的位置。 my_data[:, ::step] 为您提供绘制所需的数据。下面是一个使用一些随机数据的例子。

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

my_data = np.random.randint(0, 20, (100, 301))
step = 50

posit = range(my_data[:, ::step].shape[1])
ax.boxplot(my_data[:, ::step], positions=posit)
plt.show()