べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【Python Coding】Plotlyを用いてグラフに「第2軸」を追加する方法

code python

こんにちは、ちくたっく(@tictak_py)です。

今回は、pythonのplotlyで可視化したグラフに「第2軸」を追加する方法を紹介していきます。第2軸というのは、測定単位の異なるデータ同士を「別の軸」で表現したい時に使う考え方です。

例えば、年度別に「売上高」と「利益率」を表したグラフをまとめて作りたいと思った場合、
・ x軸には「年度」のデータ
・ y軸には「売上高」と「利益率」のデータ

が必要になります。
ただ、y軸の売上高は単位が「金額」であるのに対して、利益率は単位が「百分率(%)」のため、同一の尺度で表すことが出来ません。

このように異なる単位のデータを同じグラフ上で表現したい時に使える方法が「第2軸」というものです。
今回はこれを「plotly」で実現する方法を解説していきます。

【こんな人に読んで欲しい記事です】

● pythonのplotlyで「第2軸」を追加出来るようになりたい方

● これから「plotly」を用いた可視化をしていきたいと考えている方

plotlyの基本的な使い方は、以下の記事で紹介しているので参考にしてみてください。

必要ライブラリのインポート

それではまず最初に、必要なライブラリをインポートしていきます。

必要ライブラリのインポート

このあと、データフレームを用いて簡易データを作成するので、pandasもインポートしておきます。

簡易データの作成

ライブラリをインポートしたので、グラフ用の簡易データを作成していきます。
内容は何でもOKですが、冒頭で紹介したような「年度」「売上高」「利益率」のデータを持ったデータフレームを作りたいと思います。

グラフ用に使う簡易データの作成

変数dfは、上記のような内容になっていることを確認しておいてください。

数値自体に特に意味はありませんが、一応以下のような内容になっています。
・ 売上高(sales) ・・・ 右肩上がりに伸びている
・ 利益率(rate)  ・・・ 2018年度まで堅調だが、その後減少→上昇

これを踏まえた上で、①第2軸を設定しない場合と②第2軸を設定した場合を見ていきましょう。

plotlyを用いたグラフ|第2軸を設定しない場合

「第2軸」を設定しないでグラフ化した場合のコードが以下となります。

第2軸を設定しない場合のコード

グラフにすると、以下のようになります。
売上と利益率が同じ単位として認識されているので、利益率(赤色の折れ線)部分がつぶれてしまっているのがわかるかと思います。

第2軸を設定しない場合のグラフ|利益率が潰れている

plotlyを用いたグラフ|第2軸を設定した場合

第2軸を設定しない場合の問題点を踏まえた上で、第2軸を設定する方法を見ていきます。

ポイントは、「specs」に「secondary_y」を追加し、第2軸としたいデータに追記する点です。

specsの部分に「secondary_y」を追加

言葉だけだとわかりにくいので、実際にコードをみて追記部分を確認してください。

「第2軸」を設定した上でグラフ化した場合のコードが以下となります(赤線部分がポイント) 。

第2軸を設定した場合のコード

上記赤線部分のコードを追記することで、「第2軸」の設定を反映することが出来ます。
結果をグラフで見てみましょう。

第2軸を設定した場合のグラフ|利益率が適切に推移している

利益率(赤色の折れ線)が見やすく推移していますね。
このように可視化することで、データを適切に読み取ることが出来るので、是非「第2軸」を使いこなせるようにしてみてください。

では今回はこのへんで。