Pythonで毎月パフォーマンスの測定した結果を分析して、月別のパフォーマンスが極端に落ちていないかを折れ線グラフにするという面倒な作業を手作業で作っていました。今回こういう作業こpythonで自動化するべきでは?と思い調べてみたところmatplotlibというライブラリで簡単に作れそうなので調べてみました。グラフを作成するのは簡単ですが軸のラベル名や凡例の設定など、最低限の設定方法は知っておいた方がいいと思いました。今回はグラフを作成するときの流れと見栄えをよくするには最低限これぐらいは知っておいた方がいいと思った内容をまとめてみました。
matplotlibで折れ線グラフを表示させてみる
まずは,仮のデータをリストにして最低限見栄え良くしたコードを記述してみました。
from matplotlib import pyplot as plt
# 対象データ
x = [1, 2, 3, 4, 5,6,7,8,9,10,11,12] # x軸の値
y1 = [1,2,3,4,5,6,7,8,9,10,11,1] # y軸の値
y2 = [2,4,6,8,2,4,6,8,1,3,5,7] # y軸の値
# figureを生成
fig = plt.figure()
# axをfigureに設定する
ax = fig.add_subplot(1, 1, 1)
# axesにplot
ax.plot(x, y1, color='r', linewidth=1, marker='*')
ax.plot(x, y2, color='b', linewidth=2, marker='o')
# 汎用要素を表示
ax.grid(true) # grid表示ON
ax.set_xticks(x)
ax.set_yticks([0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
ax.set_xlim(left=0, right=13) # x範囲
ax.set_ylim(bottom=0, top=13) # y範囲
ax.set_xlabel('月',fontname="MS Gothic") # x軸ラベル
ax.set_ylabel('\n秒\n平\n均',fontname="MS Gothic",rotation=360,va='center') # y軸ラベル
ax.set_title('タイトル名',fontname="MS Gothic",) # グラフタイトル
ax.legend(['処理A', '処理B'],prop={"family":"MS Gothic"},loc=2) # 凡例を表示
ax.set_facecolor('azure') #グラフの背景色
plt.show()
jupyterlabで実行

jupyterlabで実行
実行結果

実行結果
Matplotlibとは?
Matplotlib(マットプロットリブ)とは、Pythonでグラフ作成などのプロット関連では一番有名なライブラリです。Anacondaでpython環境をインストールした人は、初めからインストールされた状態です。Matplotlibには,2つの書き方があり、MATLAB形式とOOP形式(オブジェクト指向プログラミング)の2種類があります。MATLAB形式は,関数の呼び出しで簡単に記述することが可能ですが、操作対象がよくわからず、カスタマイズや機能追加などを行おうとするとよくわからなくなります。(私だけかもですが・・・・)実際今はOOP形式が推奨されているためOOP形式の方で記述したほうがいいと思います。
matplotでグラフ描画するときの基本的な流れ
基本的な流れは、以下のようになります。
- matplotlibをインポート
- figureを生成
- 生成したfigureにaxesを生成、配置
- axesに描画するデータやグラフの設定を行う
- 表示したり画像として保存したりする
matplotlibをインポート
pythonでmatplotlibライブラリを使用するにはインポートが必要です。
import matplotlib as plt
#またはmatplotのpyplotだけを使うので以下のような書き方でも良い
from matplotlib import pyplot as plt
figureを生成
figureは、説明が難しいですが私の考えでは,ウィンドウみたいなものと考えたらよいと思います。
グラフの保存は、figure単位で保存されます。
fig = plt.figure()
生成したfigureにaxesを生成、配置
上記で作成したfigure(ウィンドウ)にaxesを作ったり、配置したりします。axesは一般的には軸という意味がありますがここではグラフ1つそのものだと思ったらよいと思います。1つのfigure(ウィンドウ)に複数のグラフを表示した場合は、axesを複数作成するイメージです。
axesに描画するデータやグラフの設定を行う
グラフに描画するデータの取得やグラフの設定を行います。ここでは最低限これは知っておいた方がいいと思う設定を説明します。
add_subplot(分割行数,分割列数,サブ領域の番号)
fig.add_subplot(1,1,1)#figureに1行1列のサブ領域1番にプロットを作成する
color = ‘r’などで色の設定ができる
color=’r’だと赤色が設定されます。1文字で色の設定ができるのは以下の全部で8種類あります。
書き方 | 表示される色 |
color = ‘r’ | 赤 |
color = ‘b’ | 青 |
color = ‘g’ | 緑 |
color = ‘c’ | シアン |
color = ‘y’ | 黄色 |
color = ‘k’ | 黒 |
color = ‘w’ | 白 |
color = ‘m’ | マゼンタ |
maker = でマーカの形が設定できる
書き方 | 表示される形 |
maker = v | ▽ |
maker = o | o |
maker = * | ★(星) |
maker = + | + |
maker = x | x |
maker = D | ◇(ひし形) |
linewidths = でマーカーのエッジの太さ
グラフの汎用要素の設定
ax.set_title(“タイトル”) | グラフタイトルが設定できる |
ax.grid(true) | グリッド線ON(デフォルトはOFF) |
ax.set_xticks() | x軸にメモリを設定する |
ax.set_yticks() | y軸にメモリを設定する |
ax.set_xlim(left=xx, right=xx) | x軸の範囲を設定 |
ax.set_ylim(bottom=xx, top=xx) | y軸の範囲を設定 |
ax.set_xlabel(“x軸ラベル名”) | x軸のラベル名を設定 |
ax.set_ylabel(“y軸ラベル名”) | y軸のラベル名を設定 |
ax.set_facecolor(‘x’) | グラフの背景色 |
ax.legend(リスト) | グラフの凡例を設定
※loc = 1 右上,loc =2 左上,loc =3 右下,loc =4 左下 |
ラベルなどに日本語が含まれた文字だと文字化けしてしまう。
ラベルや凡例に日本語が含まれている場合は、フォントを指定すると文字化けが解消される。
#ラベルやタイトルの場合
fontname="MS Gothic"
#凡例の場合
prop={"family":"MS Gothic"}
Y軸ラベル名の日本語を縦書きにする場合
ソースの秒平均などのようにY軸のラベル名を日本語で設定すると表示が縦書きにはなりますが、横文字になってしまう少しダサい感じになってしまいます。こういう時は改行コードとrotationをうまく使って調整しましょう。
ax.set_ylabel('\n秒\n平\n均',fontname="MS Gothic",rotation=360,va='center')
まとめ
上記の設定以外もかなり細かい設定がmatplotlibライブラリでできます。この機能をうまく使いこなせば、データ分析を視覚化する際に、かなり重宝すると思います。今回は最低限これだけ覚えていれば、折れ線グラフは、きれいに書けると思います。
★月額110円~/WordPress簡単インストール! ロリポップレンタルサーバー ★
コメント