在一张图中绘制多个箱线图
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()
我正在使用 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()