在python中将numpy矩阵绘制为violinplot

在python中将numpy矩阵绘制为violinplot,python,numpy,matplotlib,seaborn,violin-plot,Python,Numpy,Matplotlib,Seaborn,Violin Plot,我对小提琴的情节有问题。我试图创建11个小提琴图,对应于11个numpy矩阵。 我使用了此代码,结果如图所示: 范围(0,len(diff))内的i的: sns.violinplot(y=diff[i],orient='v') 我想分割所有的小提琴情节,并在它们下面贴上标签 感谢您的帮助。直接使用matplotlib,而不是seaborn: diff = np.array([np.random.normal(loc=i, size=(100,)) for i in range(10)])

我对小提琴的情节有问题。我试图创建11个小提琴图,对应于11个numpy矩阵。 我使用了此代码,结果如图所示:

范围(0,len(diff))内的i的
:
sns.violinplot(y=diff[i],orient='v')

我想分割所有的小提琴情节,并在它们下面贴上标签


感谢您的帮助。

直接使用matplotlib,而不是seaborn:

diff = np.array([np.random.normal(loc=i, size=(100,)) for i in range(10)])

fig, ax = plt.subplots()
for i in range(0,len(diff)):
    ax.violinplot(dataset=diff[i],positions=[i])

或者,更紧凑:

fig, ax = plt.subplots()
ax.violinplot(dataset=diff.T,positions=range(10))
如果numpy阵列是独立的:

array1 = np.random.normal(loc=0, size=(100,))
array2 = np.random.normal(loc=1, size=(100,))
array3 = np.random.normal(loc=2, size=(100,))
array4 = np.random.normal(loc=3, size=(100,))
array5 = np.random.normal(loc=4, size=(100,))


fig, ax = plt.subplots()
for i,arr in enumerate([array1, array2, array3, array4, array5]):
    ax.violinplot(dataset=arr,positions=[i])

或者如果您想使用seaborn:

diff=np.array([np.random.normal(loc=i,size=(100,))表示范围(10)内的i)])
sns.violinplot(数据=差异T)

谢谢你的回答,但我有一个不同的问题,我想创建11个小提琴图,这11个小提琴图来自11个不同的numpy矩阵,而不是一个有11个rowsis
diff
向量列表的矩阵?您的代码中的符号
diff[i]
似乎意味着我添加了另一个片段,介绍如何处理多个单独的数组
diff[i]
是一个numpy矩阵列表,我提出的第一个或最后一个解决方案应该可以满足您的需要,不是吗?