Kumpei Shiraishi's blog

物理、プログラミング、クライミングに関する雑記

matplotlibで定数関数を描く

やりたいこと

matplotlibで定数関数を描画したい。

ダメな例

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return 1

x = np.arange(-1,1,0.1)
y = f(x)
plt.plot(x,y)

plt.show()

これだと

ValueError: x and y must have same first dimension

というエラーが出る。xyのデータ数が合っていない、ということだ。

上手くいく例

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return 1

x = np.arange(-1,1,0.1)
y = [f(x[0])] * np.size(x)
plt.plot(x,y)
plt.show()

定数関数だと分かっているので、xの要素のどれかを指定してf(x)に渡し、xの配列長と同じ長さのリストをyに代入すれば良い。

ちなみにyの初期化は、こちらの方法の方がリスト内包表記よりも5.7倍くらい速かった。