前提・実現したいこと
①matplotlibを利用して次のPandasDataFlameを積み上げ棒グラフとして表示。
Python
1df = pd.DataFrame({'会社':["トヨタ","ホンダ","日産","スズキ","GM","その他"], 2 'SUV':[30,0,10,15,0,30], 3 'ワゴン': [0,30,0,40,45,0], 4 'セダン': [50,25,30,45,0,25]})
②棒グラフの中に数字を記入
③ただし、欠損値(0)は表示しない
発生している問題・エラーメッセージ
①は問題ないのですが ②棒グラフの中に数字を記入 ③ただし、欠損値(0)は表示しない がどうしてもうまくできません。
該当のソースコード
import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'会社':["トヨタ","ホンダ","日産","スズキ","GM","その他"], 'SUV':[30,0,10,15,0,30], 'ワゴン': [0,30,0,40,45,0], 'セダン': [50,25,30,45,0,25]}) df = df.set_index('会社') ax = plt.subplot() df.plot.bar(stacked=True, color=['black', 'green', 'red'], ax=ax) ax.set_ylabel('金額') for p in ax.patches: ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005),color = "w")
試したこと
https://teratail.com/questions/234747
を参照してax.textでの記載も試したのですが、座標取得がどうしてもうまくできません。
https://stackoverflow.com/questions/25447700/annotate-bars-with-values-on-pandas-bar-plots
の回答にあるax.patchesとax.annotateの方がシンプルそうだったので、
試していたのですが手詰まりになってしまいました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/17 08:44