Matplotlib能否用来创建实时更新并能增减的柱状图动画?

2024-06-02 12:37:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个项目,这个项目接收代表准确预测的数据输入。它的伪思想是程序将创建11个条形图,这些条形图会实时更新(值会增加或减少),并且需要导出为.mp4文件。expect输入是11个包含要更新的值的列表。我的问题是,我真的不知道从哪里开始,因为我找不到任何与动画,允许递增和递减多个条形图。你知道吗

我到处寻找可能的方法,试图收集信息。那些看起来有效但却不起作用的东西在不断地重新绘制图表,但它只是在屏幕上抛出一个新的图表,除非我能捕捉到它,否则它不是真正的实时更新。下面的代码我在更新之前在这里找到:Updating a matplotlib bar graph?,它没有被更改,但这是我能想到的最接近的代码,它使用了正确的方法,但它不是一个真正的动画,也没有被保存。你知道吗

import matplotlib
matplotlib.use('TKAgg')
import matplotlib.pyplot as plt
import numpy as np
import time

def animated_barplot():
    # http://www.scipy.org/Cookbook/Matplotlib/Animations
    #mu, sigma = 1, 15
    N = 11
    x = np.random.rand(11)
    print(x)
    rects = plt.bar(range(N), x,  align = 'center')
    for i in range(50):
        x = np.random.rand(11)
        for rect, h in zip(rects, x):
            rect.set_height(h)
        fig.canvas.draw()
        time.sleep(512/22050)

fig = plt.figure()
win = fig.canvas.manager.window
win.after(100, animated_barplot)

plt.show()

正如我在顶部所说的,代码的理想目标是能够实时更新多个条形图,这些条形图的值可以增加也可以减少,并将整个动画保存为视频格式。我不希望有人能为我提供完整的代码,但如果有人能简单地给我指出一些有用的东西,那就太好了。或者为我提供一个可能的工作方法的伪代码类型,这也将是非常有用的。你知道吗


Tags: 项目方法代码importtimematplotlibasnp