python matplotlib绘制gif动图以及保存

python matplotlib绘制gif动图以及保存

标签: python matplotlib


谨以此文纪念我两天来的悲剧

昨天我用lstm拟合sin曲线,看到别人画的做的动图很好看,并且还能保存下来,所以我也想做着玩一下,但是没想到在网上各种教程都不太对,最后还是无意间误打误撞成功了,所以纪念一下。

matplotlib绘制动画

function 1.

第一种方法就是采用matplotlib中的一种交互方式,这样我们就能保证在plt.show()的时候进程不会挂起,所以达到绘制图画的时候能够连续起来,这种在你做实验的时候画着比较简单,不需要新的知识,只要用过plt画图,几乎一看就明白,下面给出例子:


if __name__ == "__main__":
    fig = plt.figure()
    plt.ion()
    plt.show()
    ims = []
    for i in range(1,10):
        im = plt.plot(np.linspace(0, i,10), np.linspace(0, np.random.randint(i),10))
        ims.append(im)
        plt.draw()
        plt.pause(0.5)
        

这段代码没什么实际意义,只是为了显示plt绘制动图,主要代码有plt.ion()代表着开启交互模式,所以plt.show()就不会影响后面的代码,后面就是普通的画图,画线段plt.plot(),然后plt.draw()就充当了绘制的作用,然后plt.pause()代表暂停0.5秒,这个由于比较简单,可以在网上找到大量例子,并且都是可以运行和实现的。

或者像下面一样画到一个figure里面。

import matplotlib.pyplot as plt
fig,ax=plt.subplots()
y1=[]
for i in range(50):
    y1.append(i)
    ax.cla()
    ax.bar(y1,label='test',height=y1,width=0.3)
    ax.legend()
    plt.pause(0.3)

但是上面的都只能实现显示,但是保存不了,后来发现使用animation可以进行保存,所以就开始了animation求学之路。

function 2.

其实使用animation画图也不是很麻烦,网上的大多数代码都能运行,并且也能看明白是在干什么。因为我觉得在这个过程中主要是在探索保存的过程中花了时间,所以就着重讲一下如何保存,先看下面这个例子。

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
if __name__ == "__main__":
    fig = plt.figure()
    ims = []
    for i in range(1,10):
        im = plt.plot(np.linspace(0, i,10), np.linspace(0, np.random.randint(i),10))
        ims.append(im)
    ani = animation.ArtistAnimation(fig, ims, interval=200, repeat_delay=1000)
    ani.save("test.gif",writer='pillow')

其实即使不说,也能看的差不多懂,for循环主要是把你要画的内容存起来,存到ims中,然后使用animation在fig中华ims,其中间隔是200ms,网上还有其他的画的方式,比如使用一个方法更新,这里你可以自己搜索,一般网上的例子都是能用的,但是网上的保存那个方法大多说都不能用 ,网上的建议是安装imagemagick或者ffmpeg,或者改一些路径等,但是我经过测试都不行,不过如果有ffmpeg之后可以保存成MP4没问题,可以参考这篇文章,但是即使安装了imagemagick并且writer使用的是imagemagick,也仍然不能保存gif,使用imagemagick的操作可以参考这篇文章,主要是关于animation使用和 ImageMagick的安装等这篇文章,关于修改配置文件以及这篇文章,也是修改配置文件,但是经历过这一路坎坷,仍然是不起作用,最后保存的gif还是0kb,后来我在改变配置文件的时候,无疑中改错了,然后控制台出现了这个错误MovieWriter imagemagick unavailable. Trying to use pillow instead.,然后我就看到了了pillow这个单词,然后把writer改为pillow,emm,这个gif图片真是漂亮。
图一
2019.4 补充:

上面我画的都是plt.plot,所以一直很顺利,但是近期我需要花scatter,但是会报错PathCollection is not之类的,所以去看了文档,发现plot和scatter的返回值竟然不一样,emmm这就很尴尬了,然后我又看了animation.ArtistAnimation发现其接受一个Artis的类型,所以我在PathCollection的文档里面找了函数,最后发现findobj可以达到这个目的,所以得到解决,代码如下:

import matplotlib.animation as animation
import matplotlib.pyplot as plt
ims = []
fig = plt.figure()
for i in range(1,10):
    im = plt.scatter(1,1).findobj()
    ims.append(im)
ani = animation.ArtistAnimation(fig, ims, interval=200, repeat_delay=1000)
ani.save("test1.gif", writer='pillow')

image
参考:

[1]: https://segmentfault.com/q/1010000012078750
[2]: https://juejin.im/post/5a7c4ab6f265da4e976e7feb
[3]: https://own-search-and-study.xyz/2017/05/18/pythonのmatplotlibでgifアニメを作成する/
[4]: http://www.hankcs.com/ml/using-matplotlib-and-imagemagick-to-realize-the-algorithm-visualization-and-gif-export.html

欢迎大家关注我的微信公众号,未来上面会推送python 机器学习 算法学习 深度学习 论文阅读 以及偶尔的小鸡汤等内容。ようこそいらっしゃい!

搜索 coderwangson 关注

image

### 回答1: Apache Flume是基于数据流的分布式系统,专门用于从各种非结构化数据源收集,聚合和移大量数据,它支持多种数据源的连接和数据交付到多种数据存储库。该软件是Apache软件基金会下的一个顶级项目,它是一个稳定、高效和可靠的工具,可以帮助企业实现数据的有效管理和分析。 apache-flume-1.9.0-bin.tar.gz下载是通过Apache官网提供的链接来进行下载的。下载完成后需要进行安装和相关配置,以便能够与其他数据源进行连接和数据交付。该软件的安装和配置较为复杂,需要具备一定的计算机技能和数据管理知识。 下载完成后,用户需要解压该文件,并在用户设置的文件夹中配置flume-env.sh和flume.conf文件。配置后,即可启Flume服务,进行数据的收集和聚合操作。在使用过程中,用户可以根据实际需要,选择不同的数据源和文件存储方式,以满足企业数据管理和分析的需求。 总之,Apache Flume是一个强大的数据管理和分析工具,具有广泛的应用和丰富的功能。但在使用前,用户需要详细了解该软件的安装和配置过程,并具备一定的技能和知识储备,以确保其能够正确地使用和操作。 ### 回答2: Apache Flume是一个分布式、可靠、高效的数据采集、聚合和传输系统,在数据处理中应用广泛。而apache-flume-1.9.0-bin.tar.gz则是Apache Flume的官方发布版本,其中bin表示此版本是可执行程序,tar.gz是一种压缩格式。 要下载apache-flume-1.9.0-bin.tar.gz,首先需要前往Apache Flume的官网,然后找到下载页面。在下载页面中可以选择下载镜像站点以及下载apache-flume-1.9.0-bin.tar.gz的链接。用户可以根据自己的网络情况、所在地区等因素选择镜像站点并点击相应的链接进行下载。 下载完成后,用户可以使用解压软件将apache-flume-1.9.0-bin.tar.gz解压到任何想要安装的目录中。解压完成后,在bin目录下可以找到flume-ng的可执行文件,即可尝试运行Flume。 值得注意的是,Apache Flume是一个开源项目,因此用户可以访问其源代码,也可以参与到项目的开发中来。该软件的最新版本、文档等信息也可在官网上获得。 ### 回答3: Apache Flume是一款优秀的分布式高可靠日志收集与聚合工具,可以将数据从各种不同的数据源采集并集中到集中式的Hadoop数据仓库中。而Apache Flume 1.9.0-bin.tar.gz是Apache Flume的最新版本程序包,包含了Flume各种组件的可执行文件、示例配置文件、JAVA API等组件。 如果要下载Apache Flume 1.9.0-bin.tar.gz,可以先访问Apache Flume的官网,找到需要下载的地方,可以选择使用浏览器直接下载或使用命令行工具wget下载到本地,解压缩后将Flume各个组件配置好后就可以使用了。 需要注意的是,安装Apache Flume还需要为其配置相应的环境(例如配置JDK环境变量等),并进行一些必要的安全设置。而且对于不同的数据源与Hadoop生态系统版本,Apache Flume部署和配置也会略有不同。因此,在使用过程中,应该先学习Apache Flume的相关知识,并根据情况灵活应用。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值