在一个图中绘制多个箱形图

时间:2019-01-13 17:54:20

标签: python-3.x for-loop matplotlib boxplot

我使用的是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循环但没有运气

任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

您只需使用索引就可以使用变量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()

enter image description here