2017-01-05 11 views
1

私はPython 2.7の新しいユーザーで、Jupiter Notebookのdataというデータフレームから積み上げ棒グラフを表示したいと考えています。 データフレームには、名前、役割(親、祖父母、子供)、コメント数、好きな数、投稿数など、ユーザーを表す複数の列があります。 私はx軸に異なる役割を持つ積み重ね棒グラフを表示し、それぞれの役割ごとにいくつの投稿、コメントなどが行われたかを要約したいと思います。 積み上げ棒グラフの加算機能の値

私はこのコードを試してみましたが、それは私が

import matplotlib.pyplot as plt 

%matplotlib inline 

data.groupby(['Role', 'Discussion','Posts','Comments', 
       'Likes']).sum().unstack().plot(kind='bar', stacked=True) 
+0

我々はそれを自分自身を試すことができますので、あなたには、いくつかのデータをご提供することができますか? – NinjaGaiden

答えて

1

はその後、x軸の上に置く必要がありますRoleようにインデックスを設定してみてください期待していた結果を表示しません。

data.groupby(['Role', 'Discussion','Posts','Comments', 
       'Likes']).sum().unstack().set_index('Role').plot(kind='bar', stacked=True) 
+0

'ロール 'は一意のフィールドではありません。 – Serenity

1

あなたのことを正しく理解していれば、家族の役割で名前を削除することでオンライン活動を組み合わせたいと思っていますか?

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 

data = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=['Comments', 'Likes', 'Posts','Discussion']) 
data['Role'] = np.random.choice(['Child','Parent', 'Grandparent'],size=(100, 1)) 
data['Name'] = np.random.choice(['Mary','Dorothy','John','Max','Alan','Kevin','Leon'],size=(100, 1)) 

grpByRole = data.groupby(['Role'])['Posts','Comments','Likes', 'Discussion'].aggregate(np.sum) 
ax = grpByRole.plot(kind = 'bar', stacked = True, colormap = 'winter', 
title = 'Activities by Role', rot = 0) 
plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5)) 
plt.show() 

enter image description here

+0

これは良いですね。そしておそらくOP –

+0

のお読みになりました。ありがとうございました。それはまさに私が得たかったものです! :-)よくやった。あなたに素敵なWEをお願いします – Charlotte

関連する問題