使用 pyplot 绘制多个函数,将函数传递给函数,并重用代码
Posted
技术标签:
【中文标题】使用 pyplot 绘制多个函数,将函数传递给函数,并重用代码【英文标题】:Plotting multiple functions with pyplot, passing functions into functions, & reusing code 【发布时间】:2020-01-30 11:20:34 【问题描述】:import matplotlib.pyplot as plt
x_coords = []
y_coords = []
def myFunction(x):
return (3*(x**2)) + (6*x) + 9
def anotherFunction(x):
return (x***3) + (x**2) + x
def getCoords(fun, num):
for n in range(num):
x_coords.append(n)
y_coords.append(fun(n))
def draw_graph(x, y):
plt.plot(x, y, marker="o")
plt.show()
if __name__ == "__main__":
# myFunction needs an argument,
# getCoords provides it as num
getCoords(myFunction(), 42)
draw_graph(x_coords, y_coords)
getCoords(anotherFunction(), 69)
draw_graph(x_coords, y_coords)
我想绘制多个任意数学函数,同时(理想情况下?)重用代码来获取坐标并绘制它们。有没有更好的方法来重组它,还是我非常接近让它工作?
This question 有很好的答案,但我不确定如何整合它们。
【问题讨论】:
另外,我忘记了需要为每个图清除 x/y 坐标列表:x_coords.clear()
& y_coords.clear()
【参考方案1】:
您必须提供函数本身而不是对其的调用。
getCoords(myFunction, 42)
getCoords(anotherFunction, 69)
你可以重组成这样的东西。具有生成坐标的专用函数和绘制坐标的专用函数:
def myFunction(x):
return (3*(x**2)) + (6*x) + 9
def get_coords(fun, num):
for n in range(num):
yield n, fun(n)
def draw_graph(coordinates):
for x, y in coordinates:
plt.plot(x, y, marker="o")
plt.show()
draw_graph(get_coords(myFunction, 45))
【讨论】:
我现在明白了。 Python 的灵活性总是让我感到惊讶。并感谢您介绍yield
以上是关于使用 pyplot 绘制多个函数,将函数传递给函数,并重用代码的主要内容,如果未能解决你的问题,请参考以下文章