我想使用红色虚线绘制y=(x+2)(x−1)(x−2)
x从-3到3。当我编写以下代码时,没有任何显示。
import numpy as np
import matplotlib.pyplot as plt
def graph(formula, x_range):
x = np.array(x_range)
y = eval(formula)
plt.plot(x, y)
plt.show()
graph('((x-3) * (x-2))', range(-3,3))
答案 0 :(得分:1)
确保graph(..)
调用超出graph
函数定义(IOW,正确缩进):
import numpy as np
import matplotlib.pyplot as plt
def graph(formula, x_range):
x = np.array(x_range)
y = eval(formula)
plt.plot(x, y, 'r--') # `r--` for dashed red line
plt.show()
graph('((x-3) * (x-2))', range(-3,3)) # <----
<强>更新强>
使用eval
不是一个好主意。相反,你可以在这种情况下传递函数。
def graph(formula, x_range):
x = np.array(x_range)
y = formula(x) # <-----
plt.plot(x, y, 'r--')
plt.show()
graph(lambda x: (x-3) * (x-2), range(-3,3)) # <---