[Python] Matplotlibを使った折れ線グラフの書き方

Matplotlibのグラフの書き方


今回はPythonでMatplotlibというライブラリを使ってグラフを書く方法を勉強する。

Matplotlibは、PythonのリストやNumPyの配列などをグラフ化することができるライブラリ


簡単な折れ線グラフを作る

  1. Matplotlibのpyplotモジュールをインポートする。pltという別名でインポートするのが一般的
  2. グラフにしたいデータを用意する
  3. pyplotのplot()でグラフを作成する
    引数には、リストやNumPyの配列などを指定する
  4. pyplotのshow()でグラフを表示する
import matplotlib.pyplot as plt
data =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]
plt.plot(data)
plt.show()
グラフ1

たった4行のコードだがグラフを作ることができた。

このグラフは、タイトルやラベルもないシンプルなものなので、少しずつカスタマイズしていくことにする。

x軸のデータを指定する

上で作成したグラフは、y軸のデータしか使っていないのでx軸はインデックスの数になっている。
まずはx軸を指定すことにする。
x軸のデータを指定するには、plot(x軸, y軸)と記述する。
import matplotlib.pyplot as plt

x_datas = range(1, 13)
y_datas =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]
plt.plot(x_datas, y_datas)
plt.show()

x_datasは、range()を使って1から12の値を指定した。
y_datasはさっきと同じ。

これを実行すると、下のグラフが作られる。
グラフ2

横軸が0からではなく1から始まるグラフが作られる。

軸の範囲を指定する

上のグラフでは、y軸は原点が5になってしまっている。また、x軸はさっき1から12を指定したのでので、左側は隙間があいているのに右側は最後まで値があり不恰好になってしまっている。

そこで、軸の範囲を指定して表示することにする。

x軸の範囲を指定するにはxlim、y軸を指定するにはylim()を使う。
引数には、最初の値と最後の値を指定する。
(例)xlim(最初の値, 最後の値)

今回はx軸を0から13、y軸を0から30に設定する。

import matplotlib.pyplot as plt

x_datas = range(1,13)
y_datas =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]
plt.plot(x_datas, y_datas)
plt.xlim(0,12)
plt.ylim(0,30)
plt.show()
グラフ3



軸の表示を変更する

いま表示されているx軸は0,2,4,6...となっている。これを編集するにはxticks(元の軸の値, 表示する値)を使う。

xticks()の2つ目の引数に文字列のリストを指定することでx軸に文字列を使うこともできる。

そこで、monthsという文字列のリストを用意し、表示されているx軸の値と置き換えることにする。

import matplotlib.pyplot as plt

x_datas = range(1, 13)
y_datas =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]

months = ['Jan', 'Feb', 'Mar', 'Apr', 
    'May', 'Jun','Jul', 'Aug', 
    'Sep', 'Oct', 'Nov', 'Dec']

plt.plot(x_datas, y_datas)
plt.xticks(x_datas, months)
plt.xlim(0, 13)
plt.ylim(0, 30)
plt.show()
グラフ4

これでx軸に全ての値が表示された。

タイトルとラベルをつける

タイトルをつけるには、pyplotのtitle()を使う。
ラベルをつけるには、x軸ならxlabel、y軸ならylabel()を使う。

import matplotlib.pyplot as plt

x_datas = range(1, 13)
y_datas =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]

months = ['Jan', 'Feb', 'Mar', 'Apr', 
    'May', 'Jun','Jul', 'Aug', 
    'Sep', 'Oct', 'Nov', 'Dec']

plt.plot(x_datas, y_datas)
plt.xticks(x_datas, months)
plt.xlim(0, 13)
plt.ylim(0, 30)

plt.title('The average temperature in Tokyo(2016)')
plt.xlabel('month')
plt.ylabel('temperature')
plt.show()

このコードを実行すると次のグラフができあがる。
グラフ5

これでグラフにタイトルと軸ラベルがついた。

ということで、ここでようやくグラフが2016年の東京都の月別平均気温ということが判明した。


タイトルとラベルの大きの変更

せっかくタイトルとラベルがついたが、小さくて見にくいのでフォントサイズを変更する。

フォントサイズの変更は、title()やxlabel()の引数fontsizeに設定したいサイズを渡せばいい。

軸の目盛りのフォントサイズは、tick_params()の引数labelsizeに値を指定する。

各フォントサイズをまとめて変更したい時は、rcParams["font.size"]に変更したい値を代入することでまとめて変更することができる。

import matplotlib.pyplot as plt

x_datas = range(1, 13)
y_datas =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]

months = ['Jan', 'Feb', 'Mar', 'Apr', 
    'May', 'Jun','Jul', 'Aug', 
    'Sep', 'Oct', 'Nov', 'Dec']

plt.plot(x_datas, y_datas)
plt.xticks(x_datas, months)
plt.xlim(0, 13)
plt.ylim(0, 30)

#フォントサイズをまとめて変更する場合
#plt.rcParams["font.size"] = 18

plt.title('The average temperature in Tokyo(2016)', fontsize = 20)
plt.xlabel('month', fontsize = 16)
plt.ylabel('temperature', fontsize = 16)
plt.tick_params(labelsize=14)
plt.show()

マーカーとグリッド

グラフにマーカーを表示するには、plot()の引数markerを指定する。今回は'o'を指定。
グリッドを表示するには、grid(True)を記述する。

import matplotlib.pyplot as plt

x_datas = range(1, 13)
y_datas =  [6.1, 7.2, 10.1, 15.4, 20.2, 22.4, 25.4, 27.1, 24.4, 18.7, 11.4, 8.9]

months = ['Jan', 'Feb', 'Mar', 'Apr', 
    'May', 'Jun','Jul', 'Aug', 
    'Sep', 'Oct', 'Nov', 'Dec']

plt.plot(x_datas, y_datas, marker = 'o')
plt.xticks(x_datas, months)
plt.xlim(0, 13)
plt.ylim(0, 30)

#フォントサイズをまとめて変更する場合
#plt.rcParams["font.size"] = 18

plt.title('The average temperature in Tokyo(2016)', fontsize = 20)
plt.xlabel('month', fontsize = 16)
plt.ylabel('temperature', fontsize = 16)
plt.tick_params(labelsize=14)
plt.grid(True)
plt.show()

グラフ6

ということで、見事に東京の2016年の月別平均気温をあらわすグラフが完成。



以上、Matplotlibを使ったグラフの書き方について

今回はここまで。

matplotlibは、もっと色々なグラフが格好良く作れるので引き続き勉強だ!


0 件のコメント :