web-dev-qa-db-ja.com

シーボーンボックスプロットのサブプロット

私はこのようなデータフレームを持っています

import seaborn as sns
import pandas as pd
%pylab inline
df = pd.DataFrame({'a' :['one','one','two','two','one','two','one','one','one','two'], 'b': [1,2,1,2,1,2,1,2,1,1], 'c': [1,2,3,4,6,1,2,3,4,6]})

単一の箱ひげ図でも構いません

sns.boxplot(  y="b", x= "a", data=df,  orient='v' )

しかし、私はすべての変数のサブプロットを構築したいです。私がやります

names = ['b', 'c']
plt.subplots(1,2)
sub = []
for name in names:

    ax = sns.boxplot(  y=name, x= "a", data=df,  orient='v' )
    sub.append(ax)

そして私は得る

enter image description here

修正方法ご協力ありがとうございます

16
Edward

サブプロットを使用して図を作成します。

f, axes = plt.subplots(1, 2)

ここで、axesは各サブプロットの配列です。

次に、引数axを使用して、どのサブプロットにプロットするかを各プロットに伝えます。

sns.boxplot(  y="b", x= "a", data=df,  orient='v' , ax=axes[0])
sns.boxplot(  y="c", x= "a", data=df,  orient='v' , ax=axes[1])

結果は次のとおりです。

enter image description here

33
Lucas
names = ['b', 'c']
fig, axes =plt.subplots(1,2)

for i,t in enumerate(names):

    sns.boxplot(  y=t, x= "a", data=df,  orient='v',ax=axes[i % 2] )

追伸@Fabian Schultzは、私のソリューションがなぜ機能するのかと尋ねます。以下のようにコードを変更しました

names = ['b', 'c']
fig, axes =plt.subplots(1,2)
sns.set_style("darkgrid")
flatui = [  "#95a5a6",  "#34495e"]
for i,t in enumerate(names):

    sns.boxplot(  y=t, x= "a", data=df,  orient='v',ax=axes[i % 2] ,  palette= flatui)

enter image description here

これは動作します。それとも私はあなたの質問を理解していないかもしれません

0
Edward