2017-01-04 8 views
0

Excelのピボットテーブルで行われた作業を複製しようとしています。私は3つの変数(アイドル時間と合計時間と顧客)を持っています。スタックされた(重なり合う)棒グラフを作成したいが、すべての変数の合計ではない。例えばPandasの積み重なった棒グラフで、合計値ではなく最大値を返します

:私は、棒グラフはアイドル時間と各顧客の合計時間の最大値を表示したい。..

Total_time = 10 
Idle_time = 3 

場合。

stack = Trueを使用しようとすると、Total &アイドル時間がスタックされ、最大値10 + 3 = 13の棒グラフが作成されます。 1つのバーが10でmaxesと3

data = df.pivot_table(df,index=['Customer'], aggfunc=np.sum) 
ax = data[['Total time [hours]', 'Idle time [hours]']].plot.bar(stacked=True) 
ax.set_ylabel("Miles") 
ax.set_title("Total Miles Per Customer") 

plt.show() 

で他の私はExcelのバージョンのスクリーンショットをアップロードし、そして更なる説明のために、バージョンをパンダどこで互いに重なり合う二つの別々のバーをしたいです。事前に

Excel Image

Pandas Image

感謝。


UPDATE:以下の溶液を用いテッド。

答えて

2

一つの簡単な解決策は、

df['Total time [hours]'].plot.bar(color='r') 
df['Idle time [hours]'].plot.bar(color='b') 

別の解決策は、合計時間マイナスアイドル時間に等しい新しい列を作成することです最後のアイドル時間でそれらを別々にプロットすることである、その後、積み上げ棒プロットを行います。そこから列の名前を変更することができます

df['Extra_Time'] = df['Total time [hours]'] - df['Idle time [hours]'] 
data[['Idle time [hours]', 'Extra_Time']].plot.bar(stacked=True) 
+0

ありがとうTed、私の6時間の欲求不満は、別々にプロットする簡単なソリューションのおかげで終わります! – Tappy

関連する問題