データの可視化のために、matplotlib と仲良くなりたいと考えた。まずは折れ線グラフについて試した。
アウトプット
matplotlib でアウトプットした折れ線グラフは下図。

準備
おまじない
下のコードは、いわゆる「おまじない」。これを書き、ファイルに「 chmod +x ファイル名」で実行権限をつけておくと、実行できるようになる。
#!/usr/bin/env python3.8
# -*- coding: utf-8 -*-
ライブラリのインポート
今回お世話になるライブラリ。慣例に従い、pyplot を plt と、 numpy を np と import する。
import matplotlib.pyplot as plt
import numpy as np
日本語を使う
デフォルトだと日本語が豆腐(白い四角の文字化け)になる。Ubuntu 環境だと、これを書いておけば良い。
from matplotlib import rcParams
rcParams['font.sans-serif'] = ['Noto Sans CJK JP']
ウィンドウとサブプロット
ウィンドウを作成し、その中のサブプロットを編集する仕組み。add_subplot に3つの引数があるが、順に、サブプロットを縦にいくつ、サブプロットを横にいくつ、何番目のサブプロットを編集するか、という意味。
# ウィンドウの作成
fig = plt.figure()
# 左上のサブプロットを編集
ax1 = fig.add_subplot(2, 2, 1)
plot
ax1.set_title() でタイトルを付ける。ax1.plot(データ , 線種指定) で折れ線グラフになる。線種は、k が黒を意味する。o (オー)で丸になり、– で破線になる。
k で黒色へ
plot のオプションで k とすると、線の色が黒くなり、標準的な出力になる。
ax1.set_title('k 黒')
ax1.plot(np.random.randn(30).cumsum(), 'k')

破線–
オプションで — (ハイフン2つ)は破線を意味する。k– なら黒の破線で表示される。
ax2.set_title('k-- 黒破線')
ax2.plot(np.random.randn(30).cumsum(), 'k--')

丸 o
オプションの o で丸での表示になる。ko なら黒丸で表示される。
ax3.set_title('ko 黒丸')
ax3.plot(np.random.randn(30).cumsum(), 'ko')

丸破線 o–
オプションで o と — (ハイフン2つ)を両方つけると、丸破線での表示になる。
ax4.set_title('ko-- 黒丸破線')
ax4.plot(np.random.randn(30).cumsum(), 'ko--')

サブプロット間を調整して、表示する
subplots_adjust で、サブプロットの間のスペースを、見栄えがよくなるように調整する。プロットは、plt.show() で見えるようになる。
# サブプロットの間のスペースを調整
plt.subplots_adjust(wspace=0.2, hspace=0.4)
# 表示
plt.show()
コードの全文
#!/usr/bin/env python3.8
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import sys
# 日本語フォント用
from matplotlib import rcParams
rcParams['font.sans-serif'] = ['Noto Sans CJK JP']
# ウィンドウの作成
fig = plt.figure()
# 左上
ax1 = fig.add_subplot(2, 2, 1)
ax1.set_title('k 黒')
ax1.plot(np.random.randn(30).cumsum(), 'k')
# 右上
ax2 = fig.add_subplot(2, 2, 2)
ax2.set_title('k-- 黒破線')
ax2.plot(np.random.randn(30).cumsum(), 'k--')
# 左下
ax3 = fig.add_subplot(2, 2, 3)
ax3.set_title('ko 黒丸')
ax3.plot(np.random.randn(30).cumsum(), 'ko')
# 右下
ax4 = fig.add_subplot(2, 2, 4)
ax4.set_title('ko-- 黒丸破線')
ax4.plot(np.random.randn(30).cumsum(), 'ko--')
# サブプロットの間のスペースを調整
plt.subplots_adjust(wspace=0.2, hspace=0.4)
# 表示
plt.show()
コメント