matplotlib で折れ線グラフを描く

データの可視化のために、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)

タイトルをつけ、プロットする

ax1.set_title() でタイトルを付ける。ax1.plot(データ , 線種指定) で折れ線グラフになる。線種は、k が黒を意味する。o (オー)で丸になり、– で破線になる。

ax1.set_title('k 黒')
ax1.plot(np.random.randn(30).cumsum(), 'k')

サブプロット間を調整して、表示する

subplots_adjust で、サブプロットの間のスペースを、見栄えがよくなるように調整する。プロットは、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()

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)