# sample code 2-1
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
xs = [1, 2, 3, 4]
ys = [1, 4, 9, 16]
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys)
plt.show()
# sample code 2-2
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
xs = [1, 2, 3, 4]
ys = [1, 4, 9, 16]
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys)
ax.set_ylabel('y-label')
ax.set_xlabel('x-label')
plt.show()
# sample code 2-3
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
xs = [1, 2, 3, 4]
ys = [1, 4, 9, 16]
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys, linestyle='dotted', linewidth=5, color='red')
ax.set_ylabel('y-label')
ax.set_xlabel('x-label')
plt.show()
各折れ線の描画において ax.plot()
の引数で label=text
を指定する。
そのうえで、座標系に対して凡例を表示するコマンド ax.legend()
を呼び出す。
# sample code 2-4
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
xs = np.array([1, 2, 3, 4])
ys = np.array([1, 4, 9, 16])
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys, linestyle='solid', label='$y=x^2$')
ax.plot(xs, ys/2, linestyle='dashed', label='$y=x^2 / 2$')
ax.plot(xs, ys/3, linestyle='dashdot', label='$y = x^2 / 3$')
ax.plot(xs, ys/4, linestyle='dotted', label='$y=x^2/4$')
ax.set_ylabel('y-label')
ax.set_xlabel('x-label')
ax.legend()
plt.show()
数式がデフォルトのフォントだと読みにくいので、数学に適したフォントを指定する。 matplotlib のバージョンによって、利用できるフォントが異なるので注意すること。
一時は下の設定を使っていたが、Google Colab ではエラーがでるので、sample code 2-5 のように変更した。
plt.rcParams['font.family'] = 'Times New Roman' plt.rcParams['mathtext.fontset'] = 'cm'
# sample code 2-5
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = [ 'DejaVu Sans' ]
plt.rcParams['mathtext.fontset'] = 'cm'
xs = np.array([1, 2, 3, 4])
ys = np.array([1, 4, 9, 16])
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys, linestyle='solid', label='$y=x^2$')
ax.plot(xs, ys/2, linestyle='dashed', label='$y=x^2 / 2$')
ax.plot(xs, ys/3, linestyle='dashdot', label='$y = x^2 / 3$')
ax.plot(xs, ys/4, linestyle='dotted', label='$y=x^2/4$')
ax.set_ylabel('y-label')
ax.set_xlabel('x-label')
ax.legend()
plt.show()
# sample code 2-6
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = [ 'DejaVu Sans' ]
xs = np.array([1, 2, 3, 4])
ys = np.array([1, 4, 9, 16])
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys, label='$y=x^2$', marker='o')
ax.plot(xs, ys/2, label='$y=x^2 / 2$', marker='d')
ax.plot(xs, ys/3, label='$y = x^2 / 3$', marker='v')
ax.plot(xs, ys/4, label='$y=x^2/4$', marker='*')
ax.set_ylabel('y-label')
ax.set_xlabel('x-label')
ax.legend()
plt.show()
折れ線 plot()
から線を消すには、引数に linestyle='None'
を指定する。
# sample code 2-7
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = [ 'DejaVu Sans' ]
xs = np.array([1, 2, 3, 4])
ys = np.array([1, 4, 9, 16])
fig, ax = plt.subplots(1, 1, figsize=(8,6))
ax.plot(xs, ys, label='$y=x^2$', marker='o', linestyle='None')
ax.plot(xs, ys/2, label='$y=x^2 / 2$', marker='d', linestyle='None')
ax.plot(xs, ys/3, label='$y = x^2 / 3$', marker='v', linestyle='None')
ax.plot(xs, ys/4, label='$y=x^2/4$', marker='*', linestyle='None')
ax.set_ylabel('y-label')
ax.set_xlabel('x-label')
ax.legend()
plt.show()
numpy.ma.masked_where() でy値をマスクすることで、ラインの上側や下側を別の色で表示することができる。
# sample code 2-8
# draw lines in different colors
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-np.pi, np.pi, 0.001)
y = np.sin(4 * x) + x/5
upper = 0.75
lower = -0.75
set_upper = np.ma.masked_where(y<upper, y) # upper以上の値を残す
set_lower = np.ma.masked_where(y>lower, y) # lower以下の値を残す
# lower以上upper以下のものを残す=lowerより小さいかupperより大きいものを除く。
set_middle = np.ma.masked_where(np.logical_or(y > upper, y<lower), y)
fig, ax = plt.subplots(1, 1, figsize=(8, 6))
ax.plot(x, set_upper, color='red')
ax.plot(x, set_lower, color='blue')
ax.plot(x, set_middle, color='black')
plt.show()