当前位置:  开发笔记 > 编程语言 > 正文

Matplotlib创建实时动画图形

如何解决《Matplotlib创建实时动画图形》经验,为你挑选了1个好方法。



1> Mike Müller..:

预先计算结果的解决方案

这样可以根据输出文件中的数据生成合适的动画:

from matplotlib import pyplot as plt
from matplotlib import animation


fig = plt.figure()

with open('error_output.txt') as fobj:
    x, y = zip(*([float(x) for x in line.split(',')] for line in fobj))


def animate(n):
    line, = plt.plot(x[:n], y[:n], color='g')
    return line,

anim = animation.FuncAnimation(fig, animate, frames=len(x), interval=1000)
plt.show()

计算值时实时动画的解决方案

这里有一个版本,允许通过regr_magic以下方式生成数据的实时动画:

import random
import time

from matplotlib import pyplot as plt
from matplotlib import animation


class RegrMagic(object):
    """Mock for function Regr_magic()
    """
    def __init__(self):
        self.x = 0
    def __call__(self):
        time.sleep(random.random())
        self.x += 1
        return self.x, random.random()

regr_magic = RegrMagic()

def frames():
    while True:
        yield regr_magic()

fig = plt.figure()

x = []
y = []
def animate(args):
    x.append(args[0])
    y.append(args[1])
    return plt.plot(x, y, color='g')


anim = animation.FuncAnimation(fig, animate, frames=frames, interval=1000)
plt.show()

这个班RegrMagic是嘲笑的帮手Regr_magic().该__call__方法使该类的实例表现得像一个函数.它有状态,并产生数字1, 0.56565,2, 0.65566等等.对于每个呼叫(第二个数字是任意的数).它还具有模拟计算时间的时间延迟.

重要的是frames().替换Regr_magic()Regr_magic(),应该是好的去.

解决具体问题

没有模拟的版本:

import random
import time

from matplotlib import pyplot as plt
from matplotlib import animation


def frames():
    while True:
        yield Regr_magic()


fig = plt.figure()

x = []
y = []
def animate(args):
    x.append(args[0])
    y.append(args[1])
    return plt.plot(x, y, color='g')


anim = animation.FuncAnimation(fig, animate, frames=frames, interval=1000)
plt.show()

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有