2017-04-05 2 views
0

하나의 다이어그램 안에 10 개의 바이올린 플롯을 만들고 싶습니다. 이 예제와 같은 많은 예제를 보았습니다. Violin plot matplotlib, 끝 부분에 무엇을 보여 주 었는지 보여줍니다.바이올린 플롯 (파이썬 포함)

그러나 실제 데이터 세트에 적용하는 방법을 알지 못했습니다. 그들은 모두 정규 분포 인 무작위 데이터를 생성합니다. 나는 형식 D [10730]에 데이터가 나는 경우 위 링크에서 적응하려고하면 : 예 :

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의 작은 버그로 보입니다. 축은 1D 배열 및 2D 배열의 목록에 대해 일관성없는 방식으로 처리됩니다.

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