当我运行cod时,我的箱线图合并在一个图中

2024-10-01 09:38:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想画几个方框图。为此,我有一个包含float64值的pandas系列(示例:timeoverall1的最后一个值

    timeoverall1
1352     89.611111
1353     95.964167
1354     71.482222
1355     94.788611
1356     71.475278
1357     70.289167
Length: 1057, dtype: float64

我将该系列转换为数组(我不知道是否需要,但我的消息来源建议这样做,所以我最好这样做)

bpoverall
  94.78861111,
  71.47527778,  
  70.28916667])

下面是我为你所做的一切:

#put into arrays to make plotready
bpoverall = np.array(timeoverall1)
bpstockout = np.array(timestockout1)
bpindig = np.array(timeindig1)
bppacking = np.array(timepacking1)
bpend = np.array(timeend1)

#print boxplots
boxplot1 = plt.boxplot(bpoverall)
boxplot2 = plt.boxplot(bpindig)
boxplot3 = plt.boxplot(bpstockout)
boxplot4 = plt.boxplot(bppacking)
boxplot5 = plt.boxplot(bpend)

因此,当我一步一步地运行代码时,我会得到5个方框图,就像我喜欢的那样。但当我一次运行所有代码时,我得到以下结果:

All boxplots are merged in one

这个错误发生在哪里?我怎样才能避免这种情况


Tags: 代码示例pandasnppltarrayfloat64boxplot
1条回答
网友
1楼 · 发布于 2024-10-01 09:38:43

根据documentation,您应该在一次调用中传递所有数据:

boxplot = plt.boxplot([bpoverall, bpindig, bpstockout, bppacking, bpend])

或者,您可以使用子图将每个图放在自己的Axis中:

nrows = 2
ncols = 3
fig, axes = plt.subplots(nrows, ncols)
datasets = [bpoverall, bpindig, bpstockout, bppacking, bpend]
for data, ax in zip(datasets, axes.ravel()):
    ax.boxplot(data)

相关问题 更多 >