import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation
#make the figure
# - set up figure, set up axis(xlim,ylim), set up line as tuple for
animation
fig = plt.figure()
ax = plt.axes(xlim=(-10,50), ylim=(1,50))
line, = ax.plot([],[], lw=2)
#initialization function - display bkgd for each frame
#line has function set data, return it as a tuple
def init():
line.set_data([],[])
return line,
speed = 0.01
#animation function - this is where the physics goes
def animate(i): #i is animation frames
x = np.linspace(0,2,100) #creates set of num evenly spaces from 0,2
y = (x - speed * i)+(((x - speed * i)^2)/2)+(((x - speed * i)^3)/6)
line.set_data(x,y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,frames=100,
interval=20, blit=True)
plt.show()
我正在尝试使用无限系列定义近似“e ^ x”并将其绘制在图表上。
无论出于何种原因,此代码生成一个对话框,其中包含一小段时间的绘图,然后以退出代码1结束。
我很困惑为什么这不起作用。
答案 0 :(得分:2)
计算y
时,您会收到拼写错误。 Python中的取幂运算符是**
,而不是^
。如果您使用y = (x - speed * i)+(((x - speed * i) ** 2)/2)+(((x - speed * i) ** 3)/6)
,则原始问题中的代码会正常运行。
奇怪的是,你没有得到预期的追溯。例如,如果您尝试
x = np.ones(5)
x ^ 1
你会得到TypeError
:
Traceback (most recent call last):
File "C:/Users/joshk/GitHubProjects/stackoverflow/b.py", line 5, in <module>
x ^ 1
TypeError: ufunc 'bitwise_xor' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
似乎这个回溯在 FuncAnimator
内被抑制了。我掠过了source code,但没有任何东西跳出来引起压制。
进一步的调查表明,追溯的抑制可能是由PyCharm引起的,而不是matplotlib。