web-dev-qa-db-ja.com

Seabornの半分(分割されていない!)バイオリンのプロット

現在seabornは、hue変数に従って_split=True_を設定することにより、 分割バイオリンプロットの機能 を提供しています。 「半分」のバイオリンプロット、つまり各バイオリンの半分を省略したプロットを作成したいと思います。このようなプロットは、各カテゴリ変数の各垂直線の片側にのみプロットされた、各連続変数のpdfに類似したものを示しています。

seabornをだまして、プロットされた値の範囲外の追加のデータポイントと追加のダミー色相でこれをプロットすることができましたが、実際にデータセットを変更せずにこれを実行できるかどうか知りたいです。 sns.violinplot()引数内。

たとえば、このグラフ:

enter image description here

このスニペットによって作成されました:

_# imports
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# load dataset from seaborn
datalist = sns.get_dataset_names()
dataset_name = 'iris'
if dataset_name in datalist:
    df = sns.load_dataset(dataset_name)
else:
    print("Dataset with name: " + dataset_name + " was not found in the available datasets online by seaborn.")

# prepare data
df2 = df.append([-999,-999,-999,-999,'setosa'])
df2['huecol'] = 0.0
df2['huecol'].iloc[-1]= -999

# plot
fig = plt.figure(figsize=(6,6))
sns.violinplot(x='species',y="sepal_width",
            split=True, hue ='huecol', inner = 'quartile',
            palette="pastel", data=df2, legend=False)
plt.title('iris')

# remove hue legend
leg = plt.gca().legend()
leg.remove()
plt.ylim([1,5.0])
plt.show()
_
13
dbouz

答えは単に、いいえ、hueの存在をだまして考え込ませずにSeabornで実現することはできません。

この回答 は、matplotlibでそれを行う方法を示しています。原則として、同じことが海のバイオリンプロットにも適用できます。つまり、バイオリンパスの半分を切り取ることができます。