nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

matplotlib基礎

はじめに

matplotlibでグラフを書きます。

図を描いてみる

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
%matplotlib inline

# numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype = None)
# num: 生成する配列(ndarray)の要素数を指定。
# endpoint: 生成する数列において、stopを要素に含むかどうかを指定。Trueなら含み、Falseなら含まない。
# retstep: 生成された配列(ndarray)の後に公差を表示するかどうかを指定。Trueなら表示し、Falseなら非表示。
# dtype: 出力された配列(ndarray)のデータ型を指定。指定がない場合、データ型はfloat。
x = np.linspace(0, 10, 1000)

print(x)
print(type(x))

# figureの縦横の大きさ
fig = plt.figure()

# figure内の枠の大きさとどこに配置している。subplot(行の数,列の数,何番目に配置しているか)
ax = plt.axes()

plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))
[ 0.          0.01001001  0.02002002  0.03003003  0.04004004  0.05005005
  0.06006006  0.07007007  0.08008008  0.09009009  0.1001001   0.11011011

・・・

  9.90990991  9.91991992  9.92992993  9.93993994  9.94994995  9.95995996
  9.96996997  9.97997998  9.98998999 10.        ]
<class 'numpy.ndarray'>

f:id:nprogram:20190424045507p:plain

複数の図を描いてみる

matplotlib.pyplot.subplotを使って規則正しくグラフを書きます。

2×2で4枚のグラフを描きます。

プロット番号は、左上が 1 で、右方向、下方向へいくにしたがい値が大きくなります。 たとえば、2 × 2 のグリッドの場合は

1 2

3 4

となります。

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

x = np.linspace(-3, 3, 20)
y1 = x
y2 = x ** 2
y3 = x ** 3
y4 = x ** 4

fig = plt.figure()

# 左上
plt.subplot(2,2,1)
plt.plot(x,y1)

# 右上
plt.subplot(2,2,2)
plt.plot(x, y2)

# 左下
plt.subplot(2,2,3)
plt.plot(x,y3)

# 右下
plt.subplot(2,2,4)
plt.plot(x,y4)

f:id:nprogram:20190424055536p:plain

matplotlib.pyplot.subplot

グリッド上に規則正しくグラフを配置する場合はsubplotメソッドを使います。

フォーマット

subplot(行数, 列数, プロット番号)

行数 × 列数 のグリッドに figure が分割され、プロット番号の位置に座標軸が作成されます。

np.linspace

NumPyのnp.linspaceは、線形に等間隔な数列を生成する関数です。

同様の数列をnp.arangeで生成することもできますが、np.linspaceを使用したほうがコード量を減らすことができます。

numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype = None)

params:

パラメータ名 概要
start intまたはfloat 数列の始点を指定します。
stop intまたはfloat 数列の終点を指定します。
num int (省略可能)初期値50
生成する配列(ndarray)の要素数を指定します。
endpoint bool値 (省略可能)初期値True
生成する数列において、stopを要素に含むかどうか指定します。Trueなら含み、Falseなら含みません。
retstep boo値 (省略可能)初期値False
生成された配列(ndarray)の後に公差を表示するかどうか指定します。Trueなら表示し、Falseなら非表示です。
dtype dtype (省略可能)初期値None
出力された配列(ndarray)のデータ型を指定します。dtypeが指定されない場合、データ型は基本的にはfloatになっている。

returns:

num等分された等差数列を要素とするndarrayが返されます。

リンク