当前位置: 首页 > 面试题库 >

Matplotlib创建实时动画图

党权
2023-03-14
问题内容

我很难设置代码来创建实时动画图,我的代码是在收集数据后绘制图形,而不显示每次迭代。我的脚本运行回归函数,然后存储在文件中,然后访问文件并对其进行打印,这就是我所拥有的,我需要移动或更改以使其实时图形化的内容是什么?我尝试在for循环内移动出图函数,但是没有用,有什么建议吗?

 fig = plt.figure()
 ax1 = fig.add_subplot(1,1,1)

 num = 10 
 for idx in range(1,num):
    c,e = Regr_magic()
        with open("CK_output.txt",'a') as CK:
            CK.write("{0},{1}\n".format(idx,c))
        with open("error_output.txt",'a') as E:
            E.write("{0},{1}\n".format(idx,e))



    def animate(i):
        pull = open('error_output.txt','r').read()
        data = pull.split('\n')
        xar = []
        yar = []

        for each in data:
            if len(each)>1:
                x,y = each.split(',')
                xar.append(float(x))
                yar.append(float(y))
            ax1.plot(xar, yar)
    ani = animation.FuncAnimation(fig, animate, interval=1000)
    plt.show()

仅供参考,数据文件包含以下内容,迭代次数和Ck值或错误,因此它们看起来像这样

1,.0554
2,.0422
3,.0553
4,.0742
5,.0232

问题答案:

预先计算结果的解决方案

这将从输出文件中的数据制作出不错的动画:

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.565652, 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()


 类似资料:
  • 关于 Flash 图形 Flash (SWF) 文件格式是一种基于矢量的图形文件格式,它用于适合 Web 的可缩放小尺寸图形。由于这种文件格式基于矢量,因此,图稿可以在任何分辨率下保持其图像品质,并且非常适于创建动画帧。在 Illustrator 中,可以在图层上创建单独的动画帧,然后将图像图层导出到网站上使用的单独帧中。也可以在 Illustrator 文件中定义符号以减小动画的大小。在导出后,

  • 创建动画剪辑 在 Unity 中,为了让游戏对象动起来,需要附加一个 动画组件。这个动画组件必须引用一个 动画控制器,动画控制器再引用一个或多个 动画剪辑。 在 Unity 中,当开始使用动画视图让游戏对象动起来时,这些元素将被自动创建和绑定。 在为选中的游戏对象创建一个新动画剪辑前,需要先确保 动画视图 是打开的。 如果游戏对象尚未绑定任何动画剪辑,那么可以在动画视图的时间轴区域中看到『Crea

  • 本文向大家介绍matplotlib 创建轴,包括了matplotlib 创建轴的使用技巧和注意事项,需要的朋友参考一下 示例 在matplotlib中创建轴的主要方法有两种:使用pyplot或使用面向对象的API。 使用pyplot: 使用面向对象的API: 便捷功能可用于在一个命令中生成图形和子图集合:plt.subplots()            

  • 问题内容: 我正在绘制星团中的位置,我的数据在具有x,y,z位置以及时间索引的数据框中。 我能够生成3d散点图,并试图生成旋转图-我虽然取得了一些成功,但是却在动画API方面苦苦挣扎。 如果我的“ update_graph”函数仅返回一个新的ax.scatter(),则除非我重建整个图,否则旧图将保持绘制状态。看来效率低下。同样,我必须将间隔设置得很高,否则我的动画每隔一帧就会“跳过”,所以这表示

  • 画布中的动画与一般的动画在理论上并没有太大的区别。动画的本质就是一连串的图像,每个图像之间的差别非常微小, 并且它们以极快的速度连续显示,每秒钟显示的图像非常多,人的肉眼通常认为自己看到的是一个正在运动的物体,而不是一张张连续显示的静态图像。 其原理就像你在学校读书时翻书一样,如果你翻书的速度足够快,一些小图形看上去就好像在运动。 仔细思考一下,你就会发现当使用代码创建动画时,只有一张纸可用,这张

  • 关于 Flash 图形 Flash (SWF) 文件格式是一种基于矢量的图形文件格式,它用于适合 Web 的可缩放小尺寸图形。由于这种文件格式基于矢量,因此,图稿可以在任何分辨率下保持其图像品质,并且非常适于创建动画帧。在 Illustrator 中,可以在图层上创建单独的动画帧,然后将图像图层导出到网站上使用的单独帧中。也可以在 Illustrator 文件中定义符号以减小动画的大小。在导出后,

  • 注意:对于 Photoshop CC 之前的 Photoshop 版本,只有当您拥有 Photoshop Extended 时,本文所讨论的某些功能才可能可用。Photoshop 不提供单独的 Extended 版本。Photoshop Extended 中的所有功能是 Photoshop 的一部分。 时间轴动画工作流程 要在时间轴模式下对图层内容进行动画处理,请在将当前时间指示器移动到其他时间/

  • 在本指南的前面,我提到了一些Jeff Broderick设计并发布到Dribbble的很棒的动画。 如我所说,这里有一些不懂得动画。首先,当地图的图标被点击时,应用的主界面(包括导航栏)同时有不透明度和比例的动画来让其淡出到黑色的背景中并且有一点点缩小。同时,地图伴随着不透明度和比例的动画显著地显现到界面的前面来。地图还会向屏幕上方移动一点,就像过度动画一样。地图图标会保持在原位。 在我们编码重现