2017-11-06 9 views
-1

私は、データフレームdfを持っている:seabornを使用してDataFrameの積み上げ棒グラフを作成するにはどうすればいいですか?

df = pd.DataFrame(columns=["App","Feature1", "Feature2","Feature3", 
          "Feature4","Feature5", 
          "Feature6","Feature7","Feature8"], 
        data=[["SHA",0,0,1,1,1,0,1,0], 
         ["LHA",1,0,1,1,0,1,1,0], 
         ["DRA",0,0,0,0,0,0,1,0], 
         ["FRA",1,0,1,1,1,0,1,1], 
         ["BRU",0,0,1,0,1,0,0,0], 
         ["PAR",0,1,1,1,1,0,1,0], 
         ["AER",0,0,1,1,0,1,1,0], 
         ["SHE",0,0,0,1,0,0,1,0]]) 

私はY軸が1値とX軸のカウントがFeatureだろう含んでいるでしょうしながら、各スタックはAppに対応するように積み上げ棒グラフを作成します。

それは今、私は、スタックバーを表示したい唯一の違いや色の伝説を持つこの棒グラフのようになります。

df_c = df.iloc[:, 1:].eq(1).sum().rename_axis('Feature').reset_index(name='Cou‌​nt') 
df_c = df_c.sort_values('Count') 

plt.figure(figsize=(12,8)) 
ax = sns.barplot(x="Feature", y="Count", data=df_c, palette=sns.color_palette("GnBu", 10)) 
plt.xticks(rotation='vertical') 
ax.grid(b=True, which='major', color='#d3d3d3', linewidth=1.0) 
ax.grid(b=True, which='minor', color='#d3d3d3', linewidth=0.5) 
plt.show() 
+1

は、デフォルトのパンダは '積み重ね= true'をパラメータとプロット使うことができませんか? – Dark

+0

@Bharath:私はシーボーン(同じパレットを使用)と同じようにスタイルを設定できますか?あなたは例を見せていただけますか? – Dinosaurius

+0

@Dinosaurius、トリックがあります - 単純に "import seaborn as sns"を実行すると、デフォルトのパレットが設定されます。これはPandasメソッドを使用してプロットするときに使用されます... – MaxU

答えて

5

@Bharathが示唆するようあなたはパンダのプロットを使用することができます。

import seaborn as sns 
sns.set() 
df.set_index('App').T.plot(kind='bar', stacked=True) 

出力:

enter image description here

更新:

from matplotlib.colors import ListedColormap 
df.set_index('App')\ 
    .reindex_axis(df.set_index('App').sum().sort_values().index, axis=1)\ 
    .T.plot(kind='bar', stacked=True, 
      colormap=ListedColormap(sns.color_palette("GnBu", 10)), 
      figsize=(12,6)) 

出力:

enter image description here

+0

パレット' YlGnBu'を使用したい場合、どうすれば設定できますか?この場合、カウントでソートするにはどうしたらいいですか?以前はこの 'df_c = df_c.sort_values( 'Count')'を使っていましたが、うまく動作しません。 – Dinosaurius

+0

よかったです。最後の明確化:グラフのサイズを設定するにはどうすればよいですか?これは 'plt.figure(figsize =(12,6))'では動作しません。 – Dinosaurius

+0

@Dinosauriusデータフレームの 'plot'メソッドの中にfigsize =(12,6)を追加します。編集を参照してください。 –

関連する問題