#実行環境
- Python 3.6.8
- Matplotlib 3.1.2
#はじめに
matplotlibのスタイルには、
pyplot API と オブジェクト指向APIの2つがあり、pyplot APIは通常、オブジェクト指向APIよりも柔軟性が低くなる。
#例1:折れ線グラフの描画
import numpy as np
import matplotlib.pyplot as plt
# データの作成
def func(x):
return 100*x*(1-x)
x1 = np.arange(0,1.01, 0.01)
y1 = func(x1)
x2 = np.arange(0, 1.1, 0.1)
y2 = x2 * 20
単純に折れ線グラフを描画する.
# グラフの描画
plt.plot(x1, y1)
plt.plot(x2, y2)
plt.show()
ここに,軸のラベルと凡例を追加する.
# X軸、Y軸のラベル
plt.xlabel('X-AXIS')
plt.ylabel('Y-AXIS')
# グラフの描画
plt.plot(x1, y1, label='LABEL1')
plt.plot(x2, y2, label='LABEL2')
# 凡例
plt.legend()
# 表示
plt.show()
さらに,軸ラベル,目盛り,凡例の文字サイズを拡大する.
# サイズ変更
plt.figure(figsize=(6,4))
# X軸、Y軸のラベル
plt.xlabel('X-AXIS',fontsize=24,fontfamily='Times New Roman')
plt.ylabel('Y-AXIS',fontsize=24,fontfamily='Times New Roman')
# 目盛りを内側に向ける
plt.tick_params(direction='in',labelsize=16)
# グラフの描画
# マーカーの種類は 'o': 円, 'D': ひし形, 's': 正方形
plt.plot(x1, y1, label='LABEL1', c='blue', linewidth=2)
plt.plot(x2, y2, label='LABEL2', c='red', linewidth=2, marker='o', markersize=10)
# 凡例
leg = plt.legend(
loc='upper left', #位置 lower/center/upper, left/center/right で指定
fontsize=18, # フォントサイズ
ncol=1, # 列数を指定
fancybox=False, # Trueだと角が丸くなる, デフォルトはTrue
edgecolor='black' # 境界線の色
)
leg.get_frame().set_alpha(1.0) # 凡例の矩形を不透明にする, デフォルトは半透明になっている
# 表示
plt.show()
さらにさらに,拡張性を考慮してsubplotを用いる.
# サイズ変更
fig = plt.figure(figsize=(6,4))
ax = plt.subplot(111)
# X軸、Y軸のラベル
ax.set_xlabel('X-AXIS',fontsize=24,fontfamily='Times New Roman')
ax.set_ylabel('Y-AXIS',fontsize=24,fontfamily='Times New Roman')
# 目盛りを内側に向ける
ax.tick_params(direction='in',labelsize=16)
# グラフの描画
# マーカーの種類は 'o': 円, 'D': ひし形, 's': 正方形
ax.plot(x1, y1, label='LABEL1', c='blue', linewidth=2)
ax.plot(x2, y2, label='LABEL2', c='red', linewidth=2, marker='o', markersize=10)
# 凡例
leg = plt.legend(
loc='upper left', #位置 lower/center/upper, left/center/right で指定
fontsize=18, # フォントサイズ
ncol=1, # 列数を指定
fancybox=False, # Trueだと角が丸くなる, デフォルトはTrue
edgecolor='black' # 境界線の色
)
leg.get_frame().set_alpha(1.0) # 凡例の矩形を不透明にする, デフォルトは半透明になっている
# グリッド線の表示, デフォルトでは透明度0%, ラインスタイルを破線にする
ax.grid(alpha=0.2,ls='--')
# 表示
fig.show()
fig.savefig('subplot',bbox_inches='tight')