【问题标题】:Animated 2D Histogram动画二维直方图
【发布时间】:2020-07-07 23:13:07
【问题描述】:

我不确定我想要的是否可行。我还没有找到解决方案。 我有数据,可以用 Matplotlib 的 hist2d 显示。 有没有办法从列表列表中渲染许多(!)这些直方图的视频/动画?

非常感谢!

【问题讨论】:

  • 嗨。欢迎来到 Stackoverflow。我想你有一种计算不同时间分布的方法,是吗?不如看看matplotlib.animation
  • 我不计算直方图。数据已经存在。我会将数据安排在一个列表列表中,其中每个列表都包含一帧动画。
  • 在这种情况下,您可能需要遍历列表并使用pyplot.hist 绘制每一帧。看看我引用的链接末尾的示例。
  • 谢谢。我看过,但我没有完全理解。我希望单独绘制每一帧并将其附加到视频中。但我在示例中看不到这一点。
  • 没有。您实际上并没有创建帧集合。相反,您可以像在 GUI 应用程序中那样进行操作。把它想象成map,你将它传递到数据列表中,然后告诉如何在屏幕上绘制数据。在这种情况下,您需要做的是编写一个函数paint_frame,它获取列表列表中的一个元素并绘制它。然后将其传递给FuncAnimation。如果这还不够,请告诉我,以便我为您提供示例。

标签: python video plot histogram diagram


【解决方案1】:

这里有一个简单的例子来说明如何做到这一点。如果您不希望之前的图在每一帧之后消失,您应该删除 ax.clear() 调用。

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
data = [[1, 2, 3], [1, 2, 2, 3], [1, 2, 2, 2, 3], [1, 2, 2, 2, 3, 3]]


def plot(frame):
    ax.clear()
    ax.hist(frame)

# blit=True may be helpful if you're using plt.plot() directly. 

ani = FuncAnimation(fig, plot, frames=data, blit=False)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 2020-12-04
    • 2021-08-23
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多