首页 > 解决方案 > 我在使用循环期间更新的 y 值更新简单 xy 图时遇到问题

问题描述

我得到了一些代码,这些代码应该模拟 y 数组在单个绘图图中随时间刷新的动画。我想在我的终端窗口中显示绘图(在 MAC 10.13.14 上使用 Spyder 3.3.6/Anaconda 1.9.7),在“for”循环的每个间隔后刷新y 值。我从一位应该进行绘图的讲师那里获得了代码-在他的视频上它看起来像一个动画-使用对各种 ax 子例程的调用-但在我手中,我得到的只是一个带有 time=0 起始数组的单个绘图价值观。

我研究了许多类似情况的博客文章,并研究了 matplotlib 手册;我尝试过使用各种命令、它们的位置和参数。我所做的最好的是将所有 y 数组绘制在一个图上(通过注释掉 ax.clear() 和 plt.show(block=false) 命令。我可以轻松地为每个 y 数组。但是对于我的代码发生了什么,我感到很困惑。

我正在提交完整的代码,以便您可以运行它并查看结果。感谢您对此有所了解。谢谢。

import matplotlib.pyplot as plt
import numpy as np

y = numpy.zeros(10)
#set up plot
fig, ax=plt.subplots()
ax.plot(y)
ax.set_ylim([0,1])
plt.show(block=False)
#instructor note: "the block=False flag tells Python to throw the plot on the screen then keep moving".

for i in range(5):
    y = np.random.random([10,1])
    ax.clear()
    ax.plot(y)
    ax.set_ylim([0,1])
    plt.show(block=False)
    fig.canvas.draw()
#Instructor note: "These commands will update the plot to show the latest y values, and then keeps moving". 

ax.clear()
ax.plot(y)
ax.set_ylim([0,1])
plt.show
fig.canvas.draw()

标签: pythonmatplotlibplotupdating

解决方案


推荐阅读