2017-04-05 142 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