Matplotlib
グラフを描く時によく使う設定
import matplotlib.pyplot as plt
# ---------- figure
plt.rcParams['figure.figsize'] =[8, 6]
plt.rcParams["figure.dpi"] = 120
plt.rcParams['figure.facecolor'] = 'white'
# ---------- axes
plt.rcParams['axes.grid'] = True
plt.rcParams['axes.linewidth'] = 1.5
# ---------- ticks
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.rcParams['xtick.major.width'] = 1.0
plt.rcParams['ytick.major.width'] = 1.0
plt.rcParams['xtick.major.size'] = 8.0
plt.rcParams['ytick.major.size'] = 8.0
# ---------- lines
plt.rcParams['lines.linewidth'] = 2.5
plt.rcParams['lines.markersize'] = 12
# ---------- grid
plt.rcParams['grid.linestyle'] = ':'
# ---------- font
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['mathtext.fontset'] = 'cm'
plt.rcParams['font.size'] = 20
plt.rcParams['axes.labelsize'] = 26
plt.rcParams['legend.fontsize'] = 26
#plt.rcParams['pdf.fonttype'] = 42 # embed fonts in PDF using type42 (True type)
プロット例
ここでは,plt.plot()
のような書き方ではなく
fig, ax = plt.subplots(1, 1)
のようなオブジェクト指向インターフェースを使用.こちらの書き方に慣れた方が細かい設定ができて便利.
fig, ax = plt.subplots(1, 1)
ax.plot([1, 2 ,3, 4], label='$y = x$')
ax.set_xlabel('test $x$')
ax.set_ylabel('test $y$')
ax.legend(loc='best', frameon=True)

jupyterlabではグラフを作成した後にfig
(名前は自分で決める)と打ち込んで実行すれば
グラフがいつでも再表示される.
保存
bbox_inches='tight'
をつけると,無駄な余白を省いてくれる.
# ---------- save figure
fig.savefig('fig.png', bbox_inches='tight') # PNG
#fig.savefig('fig.png', bbox_inches='tight', dpi=300) # high dpi PNG
#fig.savefig('fig.pdf', bbox_inches='tight') # PDF
カラーサイクル
デフォルト
デフォルト(matplotlib 3.3.2)のカラーサイクルは10色.
fig, ax = plt.subplots(1, 1)
ax.set_xlabel('test $x$')
ax.set_ylabel('test $y$')
#ax.legend(loc='best', frameon=True)
for i in range(12):
ax.plot([i + 1, i + 2 , i + 3, i + 4])

カラーサイクルのn番目の色を使用
例えば0番目(デフォルトだと青っぽい色)の色を使いたい場合はC0
で使用可能.
fig, ax = plt.subplots(1, 1)
ax.set_xlabel('test $x$')
ax.set_ylabel('test $y$')
#ax.legend(loc='best', frameon=True)
for i in range(12):
ax.plot([i + 1, i + 2 , i + 3, i + 4], 'C0')

水平線
axhline()
は範囲を割合指定hlines()
は範囲を座標で指定
fig, ax = plt.subplots(1, 1)
# ---------- horizontal lines
ax.axhline(y=2, xmin=0, xmax=1, color='black', linewidth=1.0)
ax.axhline(y=2.5, xmin=0.1, xmax=0.9, color='black', linewidth=1.0)
ax.hlines(y=3, xmin=0.5, xmax=2.5, color='black', linewidth=1.0)
ax.plot([1, 2 ,3, 4], label='$y = x$')
ax.set_xlabel('test $x$')
ax.set_ylabel('test $y$')

垂直線
axvline()
は範囲を割合指定vlines()
は範囲を座標で指定
fig, ax = plt.subplots(1, 1)
# ---------- vertial lines
ax.axvline(x=1, ymin=0, ymax=1, color='black', linewidth=1.0)
ax.axvline(x=1.5, ymin=0.1, ymax=0.9, color='black', linewidth=1.0)
ax.vlines(x=2, ymin=1.5, ymax=2.5, color='black', linewidth=1.0)
ax.plot([1, 2 ,3, 4], label='$y = x$')
ax.set_xlabel('test $x$')
ax.set_ylabel('test $y$')
