我试图在一个类的方法中绘制一个动态图。这里或多或少有一个方法
def plot():
axes = plt.gca(bock=False)
ydata = []
xdata = []
axes.set_xlim(0, 200)
axes.set_ylim(-1,1)
line, = axes.plot(ydata, 'r-')
i=0
while True:
xdata.append(i/10)
ydata.append(np.sin(i/10))
line.set_ydata(ydata)
line.set_xdata(xdata)
plt.draw()
plt.pause(1e-17)
i+=1
plt.show()
问题是它是一个无限循环,在这个循环函数中,我什么也做不了。我不能用我的Ipython控制台。我希望在不阻塞控制台的情况下运行此方法。我来这里只是想用打印和线程来做类似的事情,但是matplotlib不支持线程。我尝试使用多处理,但仍然会阻塞控制台。有选择吗
所以这个代码有很多问题。 第一:传递给
plt.gca()
的bock
参数引发了错误。 第二:plt.show()
停止执行,因此动画不会启动。 要解决此问题,必须在调用plt.show()后触发动画。 一种方法是利用事件。您可以在此处阅读更多关于它们的信息: https://matplotlib.org/3.2.1/users/event_handling.html 最后,您可以使用条件andbreak
来确保循环不是无限的。 以下是一个例子:此外,如果希望更快地执行,请使用
blit
或动画函数 来自matplotlib,如FuncAnimation
相关问题 更多 >
编程相关推荐