2017-08-03 9 views
3

バイオリンプロットをレイアウトするときにゼロカウントカテゴリを無視する簡単な方法はありますか?下の例では、「はい:赤」と「いいえ:緑」のケースはありませんが、バイオリンプロットは「欠落」のカテゴリをまだ示しています。なぜこれがデフォルトの振る舞いになっているのかわかりますが、これを抑制して空白を取り除くために色相に使用されている要素を変更する方法はありますか?事前にSeaborn - ゼロカウントカテゴリのバイオリンプロットを圧縮

df = pd.DataFrame(
    {'Success': 50 * ['Yes'] + 50 * ['No'], 
    'Category': 25 * ['Green'] + 25 * ['Blue'] + 25 * ['Green'] + 25 * ['Red'], 
    'value': np.random.randint(1, 25, 100)} 
) 
sns.violinplot(x='Success', y='value', hue='Category', data=df) 
plt.show() 

enter image description here

感謝。

+0

あなたはhue_orderを使用して不正行為を行うことができます。 Greenを中カテゴリに設定しても、データのないカテゴリがまだ引き出されている根本的な問題は解決されません。 – error

答えて

1

これは、私がコメントに示唆したような状況に特化した不正行為がなければ、最も近いです。

FacetGridは、sharex = False引数で使用できます。次に、mapメソッドが必要で、violinplotFacetGirdオブジェクトの適切な引数にマップします。これと同じように:

g = sns.FacetGrid(df, col="Success", sharex=False) 
g = g.map(sns.violinplot, 'Category','value') 
plt.show() 

この画像になる:空のプロットが描かれる

enter image description here

これ以上の空のスペースを。

唯一の欠点は、色相引数が現在機能していないことです。私は適切な方法で色相を含む解決策を探し続けます。ユーザはx軸上の実際のカテゴリを引き続き見ることができます。しかし、これは理想的ではありません。

私はまだそれの答えがあなたを助けることを願っています。