如何使用多维numpy数组作为输入来用Seaborn绘制箱线图或小提琴图?

时间:2020-01-29 18:22:59

标签: python numpy seaborn

我有一个尺寸为(500,10)的二维numpy数组,我想将其绘制为Seaborn小提琴图或箱形图,其中10列中的每一个都有一个框。无需进行繁琐的操作即可将其传递给Seaborn的最干净方法是什么?我有信心可以进行转换,但是恐怕我可能不了解这样做的最佳方式和最简洁的方式。

例如,我可以做类似

的操作
all_arrays = []
cols = the_array.shape[1]
for col in range(0, cols):
     all_arrays.append(the_array[:, col])
sns.boxplot(data=all_arrays)

但是是否有更好的方法将原始数组拆分为数组列表,或者有更好的方法将其传递给seaborn?谢谢。

1 个答案:

答案 0 :(得分:3)

您的解决方案是正确的,boxplot()需要一个向量列表,因此您必须以某种方式将矩阵转换为向量。

不过,您可以简化代码编写方式:sns.boxplot(data=[d for d in the_array.T])

完整代码:

# create a dummy matrix 500x10
the_array = np.zeros(shape=(500,10))
for i in range(10):
    the_array[:,i] = np.random.normal(loc=i, size=(500,))

sns.boxplot(data=[d for d in the_array.T])

enter image description here