用多维数据绘制带有seaborn的箱形图

时间:2016-09-20 16:32:02

标签: python matplotlib plot seaborn

我正在尝试用海岸创建一个箱形图,如下所示:

我有一些合成数据,其中有24个不同的类别,它们生成为:

import numpy as np
x = np.arange(10, 130, step=5)

现在,对于每个类别,我生成5个随机观察结果如下:

y = np.zeros(shape=(len(y), 5)) # Each row contains 5 observations for a category

现在,我想做的是做一个带有海岸的箱形图,我沿着y轴绘制这5个值(突出显示置信区间),在x轴上,我想要这些类别中的每一个。所以,我这样做:

import seaborn as sis
fig = sns.boxplot(x=x, y=y)
fig.plt.show()

但是,除了数据必须是1维之外。我不知道如何构建我的数据以便我可以绘制它。

1 个答案:

答案 0 :(得分:1)

正如您所指出的,问题在于输入数据的形状。如果不想对你要做的事做出太多假设,我认为你正在寻找像

这样的东西
x = np.arange(10, 130, step=5)
y = 4 * np.random.randn(x.size, 5) + 3

x_for_boxplot = np.repeat(x, 5)
y_for_boxplot = y.flatten()

ax = sns.boxplot(x_for_boxplot, y_for_boxplot)

其中x_for_boxploty_for_boxplot已重组,因此它们是sns.boxplot正在寻找的相同大小的一维数组。我还更改了y,使其由随机的正常值而不是零组成。

enter image description here