Matplotlib-y軸が反転したグラフの描き方
こんにちは、インターンの菅野です。最近、お腹のへりが早いです。
ところで、吊り下げグラフ・上から下がってるグラフ・X軸が上にあるグラフ・逆さまグラフ・up side down グラフ、…呼び方がわからないのですが、上のグラフのようにy軸を反転させて棒グラフを描く機会がありました。
描く方法はシンプルなのですが、一切の情報がなかったため、自分は多くの時間を使ってしまいました。
このようなグラフをこの記事では「吊り下げグラフ」と呼ぶことにします。
吊り下げグラフの描き方をまとめておきたいと思います。
使用するデータ
このようなアクセス数と新規登録者のデータを用いて描画していきます。
pageview | register | |
---|---|---|
2018-03-01 | 101561 | 2734 |
2018-03-02 | 98651 | 3130 |
2018-03-03 | 118597 | 2927 |
2018-03-04 | 120073 | 3103 |
2018-03-05 | 101303 | 3240 |
2018-03-06 | 98437 | 3156 |
2018-03-07 | 101657 | 3616 |
2018-03-08 | 97586 | 3218 |
2018-03-09 | 97601 | 3154 |
2018-03-10 | 119095 | 2982 |
略 | 略 | 略 |
吊り下げグラフの描き方
吊り下げグラフを描画するのに必要なのは、set̲ylim(min, max)を、set̲ylim(max, min)に変えることです。
import matplotlib.pyplot as plt
from matplotlib import cm
fig, ax1 = plt.subplots()
# 棒グラフを描く
ax1.bar(frame.index.to_pydatetime(), frame["register"],
color=cm.Accent.colors[4], label="新規登録者数")
# y軸の最小値、最大値を決める。(逆さまにするために、最大値, 最小値という順番で指定する)
ax1.set_ylim([50000, 0])
# 凡例をつける
ax1.legend(loc=6)
これを知るまで、y軸の値をマイナスにして自作関数でラベルを無理やり書き換える、、なんてことをやっていました。。汗
活用例
fig, ax1 = plt.subplots()
# 棒グラフを描きはじめる
ax1.bar(frame.index.to_pydatetime(), frame["register"],
color=cm.Accent.colors[4], label="新規登録者数")
# y軸の最小値、最大値を決める。(逆さまにするために、最大値, 最小値という順番で指定する)
ax1.set_ylim([50000, 0])
# 2軸を関連させ、新たな図を描きはじめる
ax2 = ax1.twinx()
ax2.set_ylim(0, 1000000)
ax2.bar(frame.index.to_pydatetime(), frame["pageview"],
color=cm.tab20.colors[3], label="PV数")
# 凡例
# グラフの本体設定時に、ラベルを手動で設定する必要があるのは、barplotのみ。plotは自動で設定される>
handler1, label1 = ax1.get_legend_handles_labels()
handler2, label2 = ax2.get_legend_handles_labels()
# 凡例をまとめて出力する
ax1.legend(handler1 + handler2, label1 + label2, loc=6, borderaxespad=0.)
# y軸に着色する
ax1.tick_params(axis='y', colors=cm.Accent.colors[4])
ax2.tick_params(axis='y', colors=cm.tab20.colors[3])
2軸グラフとのコンボ利用で見やすいグラフが描けそうです。
記事では、2軸のplot描画の方法をまとめました。
合わせてご覧ください。
DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。
Contact
Explore Jobs
関連記事