我使用的是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循环但没有运气
任何建议将不胜感激
答案 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()