2017-04-05 135 views
0

我想创建10个小提琴剧情,但在一个图中。我看了很多像这样的例子:Violin plot matplotlib,结果显示了我想要的。python小提琴剧情

但我不知道如何使它适应一个真实的数据集。他们都只是产生一些正态分布的随机数据。 我在形式d [10,730]的数据,如果我试图把它从链路适应以上: 例如:

axes[0].violinplot(all_data,showmeans=False,showmedians=True) 

我的代码:

axes[0].violinplot(D,showmeans=False,showmedians=True) 

它不工作。 它应该并行打印10个小提琴情节(D的第一维)。

那么我的数据如何看起来像获得相同类型的小提琴情节?

回答

1

你只需要转置你的数据阵列D

axes[0].violinplot(D.T,showmeans=False,showmedians=True) 

这似乎是matplotlib中的一个小错误。对于一维数组和二维数组,列表以非一致的方式处理坐标轴。

import numpy as np 
import matplotlib.pyplot as plt 

n_datasets = 10 
n_samples = 730 
data = np.random.randn(n_datasets,n_samples) 

fig, axes = plt.subplots(1,3) 

# http://matplotlib.org/examples/statistics/boxplot_vs_violin_demo.html 
axes[0].violinplot([d for d in data]) 

# should be equivalent to: 
axes[1].violinplot(data) 

# is actually equivalent to 
axes[2].violinplot(data.T) 

enter image description here

您应该提交错误报告。

+0

非常感谢。作品。另一种可能性是将np.array(D)转换为一个列表(我昨晚找到的)。 – Leo