Python/matplotlib

Pythonで図面を書く時のライブラリ.(参考サイト:matplotlib入門 りんごがでている早く知っておきたかったmatplotlibの基礎知識、あるいは見た目の調整が捗るArtistの話 – Qiita

実は,matplotlibには二つの方法がある.(名前は参考サイトに則りました.)

  1. オブジェクト指向インターフェース(fig, ax = plt.subplots()等の後にax.plotなどで描く方式)
  2. Pyplotインターフェース(plt.subplot()などplt.XXXで描く方式)

オブジェクト指向インターフェース

その名の通りオブジェクト指向でプロットする.細かいところも修正できるのでこっちを採用.

基本的な使い方
  1. matplotlibをimportする
  2. fig, ax = plt.subplots()で新規のFigureとAxesのインスタンスを作る.
  3. プロットする(例:ax.plot(x,y))
  4. 軸の調節・グラフタイトルとラベルの編集

サンプルコード(y=sinxとy=cosxを描く)

# import libraries
import matplotlib.pyplot as plt
import numpy as np

# parameters
pi = np.pi
x = np.arange(0, 2*pi, pi/100)
y_sin = np.sin(x)
y_cos = np.cos(x)

# 1. make Figure and Axes instance
fig, (ax1, ax2) = plt.subplots(2, 1)

# 2. plot data

# # y = sinx
ax1.plot(x, y_sin)
# # y = cosx
ax2.plot(x, y_cos)

# 3. figure configuration

# # adjust axes
# # # x axis
ax1.set_xlim(0, 2*pi)
ax2.set_xlim(0, 2*pi)

# # # y axis
ax1.set_ylim(-1.3, 1.3)
ax2.set_ylim(-1.3, 1.3)

# # title
ax1.set_title("$\sin x$")
ax2.set_title("$\cos x$")

# # label

# # # x
ax1.set_xlabel("x")
ax2.set_xlabel("x")

# # # y
ax1.set_ylabel("y")
ax2.set_ylabel("y")


# axis tight
fig.tight_layout()

# show figure
plt.show()

結果

 

Pyplotインターフェース

MATLABみたいな方式で,描くaxisやfigureを指定しなくても勝手にプロットしてくれる.簡単だけど,細かい微修正がやりにくい.

基本的な使い方
  1. matplotlibをimportする
  2. plt.figure()で新規のFigureインスタンスを描画する
  3. プロットする(例:plt.plot(x,y))
  4. plt.showで図面に出力する

サンプルコード(y=sinxの曲線を描く)

# import libraries
import matplotlib.pyplot as plt
import numpy as np

# parameters
pi = np.pi
x = np.arange(0, 2*pi, pi/100)
y_sin = np.sin(x)
y_cos = np.cos(x)

# 1. make Figure instance
plt.figure()

# 2. plot data
# # sin
plt.subplot(211)
plt.plot(x, y_sin)
# # # figure configuration
ax1 = plt.gca()
ax1.set_xlim(0, 2*pi) # --- 結局ここでaxのメソッドを使う
ax1.set_ylim(-1.3, 1.3)
ax1.set_xlabel("x")
ax1.set_ylabel("y")
ax1.set_title("$\sin x$")

# # cos
plt.subplot(212)
plt.plot(x, y_cos)
# # # figure configuration
ax2 = plt.gca()
ax2.set_xlim(0, 2*pi) # --- 結局ここでaxのメソッドを使う
ax2.set_ylim(-1.3, 1.3)
ax2.set_xlabel("x")
ax2.set_ylabel("y")
ax2.set_title("$\cos x$")

# axis tight
fig = plt.gcf()
fig.tight_layout() # --- 結局ここでfigのメソッドを使う

# 3. show figure
plt.show()

結果

各コマンドについて

これから追加していくよ.よろしくやで.

Tips

あわせて読みたい