楽屋

Matplotlib-2軸グラフの書き方

こんにちは! 新宿の昼ごはんがお財布に響いている、インターンの菅野です。

今回は、matplotlibの2軸を使ってグラフを書く方法について説明していきたいと思います。
下の図を目標に進めていきます。

matplotlibには2つの流派が存在します。
1つ目は、 Pyplot流派
2つ目は、オブジェクト指向流派になります。
今回の記事では、オブジェクト志向流派を使用しています。

使用するデータ

データは、「とあるWebサービスのPV数(ページビュー)と新規登録者の数」と想定します。
なんと最近ある記事がバスりました。いつもと比べてどのくらい数値が変わったのかを確認したいと思います

 PV新規登録者
2018-03-011005616327
2018-03-021038596309
2018-03-031311877690
2018-03-041313847511
2018-03-05993816364
2018-03-06989456569
2018-03-07997476311
2018-03-081018836652
2018-03-091019676722
2018-03-101307787457

描画

2つのグラフをまとめて描画・1軸

では、さっそくグラフを書いてみましょう。 

すると、なんだかバズった割にはどうも新規登録者数が少なめに見えます。
このグラフは問題ない、、、ということはなく、「異なる単位のデータを同じ軸で表示している」という致命的な欠点を抱えています。PV数と新規登録者数は、単位が違います。

その結果、新規登録者数のグラフが潰れてしまっています。
2つの数値を分けて描画してみましょう。

 

2つのグラフを別々に描画

2つのグラフを別々に描画します。

新規登録者数を潰さずに描画することができました。

 

2つのグラフをまとめて描画・1軸

上記の2つ別々に描画するのではなく、1つのグラフで描画してみましょう。

ここで登場しているのが、twinx()関数です。
この関数で、左右に異なる軸を持つことができるようになります。

 

おまけ: 2軸グラフを書く際に注意すべきこと

2軸グラフは使い方によっては、わかりにくくなり誤解を招くことがございます。
以下のような工夫をし、理解しやすいグラフを目指しましょう。

  1. 重要な数値を左軸にする
  2. なるべく違うタイプのグラフを用いる。
      例:棒グラフと線グラフの組み合わせ
  3. 着色する

上記に注意し、グラフを修正すると以下のようになります。

以下、ソースコードです。

 

いかがだったでしょうか?  
matplotlibで2軸グラフを描く方法をご紹介いたしました。
意外と奥が深いmatplotlib、いろいろ調べてみると新たな発見があるかもしれません。