广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用Python生成动态图表,一个很Co
  • 838
分享到

使用Python生成动态图表,一个很Co

图表动态Python 2023-01-31 02:01:03 838人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

作者 | Viviane译者 | 刘旭坤编辑 | Jane出品 | ai科技大本营【导读】Matplotlib 和 Seaborn 用来做数据固定的静态图表很不错,但如果需要动态显示数据的变化过程用这俩库就有点难度了。如果能用短视频来动

640?wx_fmt=jpeg


作者 | Viviane

译者 | 刘旭坤

编辑 | Jane

出品 | ai科技大本营


【导读】Matplotlib 和 Seaborn 用来做数据固定的静态图表很不错,但如果需要动态显示数据的变化过程用这俩库就有点难度了。如果能用短视频来动态展示图表中数据的变化是不是就有点厉害了?而且不用学新的库,就用Matplotlib 和 Seaborn,是不是更厉害了!今天就教大家一个很酷的教程,马上动起来。

 

640?wx_fmt=gif


这里我们用到的数据是由美国疾控中心和药物滥用研究所收集的。我最近用他们的数据给一个关于美国鸦片药物滥用危机的纪录片做了几个动态图所以这里就接着用了。下面是数据的下载链接:


下载地址:

https://www.drugabuse.Gov/sites/default/files/overdose_data_1999-2015.xls


除了用 Matplotlib 和 Seaborn 来作图我们还用到了 Numpy 和 pandas 来处理数据。先把需要的库都 import 进来:


640?wx_fmt=png


接下来把数据从下载的excel文件读进来,我们用Pandas来读所以读进来就是一个DataFrame。这里我们还写了一个传入行数只读取一行数据的函数。这是为了以后给不同药物分别做图的时候读数据方便一些。


640?wx_fmt=png


这些准备工作做好我们就可以开始作图了。如果你用 Jupyter Notebook的 话记得加图表页内显示的命令 %matplotlib notebook。


我们先用刚才写的 get_data 函数把因为海洛因死亡的人数读出来。这个 DataFrame 有两列,分别是年份和死亡人数。


640?wx_fmt=png


接下来我们初始化一个 FFmpeg 输出流。这里我设置帧率 20 码率 1800 ,当然你自己可以改帧率和码率。


640?wx_fmt=png


下面我们需要创建图表和横纵坐标。这里要把数据范围定死不然数据更新的时候 Matplotlib 会自动更新数据范围我们的动图数据范围就会来回变。


640?wx_fmt=png


绘图中最重要的就是下面这个 animate 函数,它的参数 i 指的是帧数。我们通过参数 i 来选择这一帧应该显示的数据然后用 Seaborn 来画一个折线图。最后两行改改字体和折线的宽度让图好看一点。


640?wx_fmt=png


要让图表动起来我们得把刚才定义的 animate 函数传给 matplotlib.animation.FuncAnimation。除了animate,FuncAnimation还有一个参数frames,这个参数的意思是说我们这段动画想一共要多少帧。这里 frames 的值是 17 帧,所以 animate 函数会被调用17次。


640?wx_fmt=png


最后我们把这段动画存成 mp4 格式就行了。如果想先看看效果,可以用plt.show()。


640?wx_fmt=png


最后出来的效果是这样的:


640?wx_fmt=gif


意思是有了但给人感觉数据的跳跃有点太快了,所以我们可能得给数据点中间插点值。插值可以用下面的 augment 函数:


640?wx_fmt=png


用 augment 函数处理完数据我们还要调整一下 FuncAnimation 函数中的帧数。这里我给 augment 传入的 numsteps 是 10,也就是说 augment 后从99 年到 15 年的 16 个数据点变成了 160 个,所以帧数也要设成 160。调整完的图看着顺溜多了,不过在数据增减变化的地方还是能看到很硬的拐弯。


640?wx_fmt=gif


为了让这些拐角也平滑一点我们参考了下面这个链接里的高斯平滑算法。这个链接里也介绍了其他的平滑算法。


Https://www.swharden.com/wp/2008-11-17-linear-data-smoothing-in-python/


此外我们还可以给图片加点背景色。


640?wx_fmt=png


大功告成!其实不是大功,只是用 Matplotlib 制作动态图表的一个很基本的例子。不过原理都是一样的,在 animate 函数里绘图然后调整调整合适的参数什么图都能动起来。最后希望大家顺利操作起来!



原文链接: 

https://towardsdatascienc e.com/how-to-create-animated-graphs-in-Python-bb619cc2dec1


    

--【完】--


寻找2018最佳AI应用案例

AI科技大本营希望找到在汽车、金融、教育、医疗、安防、零售、家居、文娱、工业等 9 大行业的最佳 AI 应用案例,记录 AI 时代影响人类发展的变革性产品/解决方案。


如果您有优秀的 AI 产品/技术解决方案,欢迎【扫码提交】,参与评选。


640?wx_fmt=jpeg


点击「阅读原文」,查看案例分享者特别奖励

--结束END--

本文标题: 使用Python生成动态图表,一个很Co

本文链接: https://www.lsjlt.com/news/187085.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Python生成动态图表,一个很Co
    作者 | Viviane译者 | 刘旭坤编辑 | Jane出品 | AI科技大本营【导读】Matplotlib 和 Seaborn 用来做数据固定的静态图表很不错,但如果需要动态显示数据的变化过程用这俩库就有点难度了。如果能用短视频来动...
    99+
    2023-01-31
    图表 动态 Python
  • 基于PyQt5制作一个gif动态图片生成器
    这个小工具制作的目的是为了将多张图片组合后生成一张动态的GIF图片。设置界面化的操作,只需要将选中的图片导入最后直接生成动态图片。 导入界面相关的第三方库 from PyQt5.Q...
    99+
    2022-11-13
  • 基于Python做一个简单的动图生成器
    目录序言代码实战序言 现在的年轻人都开始每天保温杯里泡枸杞,这怎么能行呢? 想要每天过的好,美女必然少不了,每天看美女,只为了愉悦心情,心情好了,才长寿。 于是怀揣着愉悦心情的想法,...
    99+
    2023-01-03
    Python动图生成器 Python动图生成 Python动图
  • 如何使用python中的networkx来生成一个图
    目录python networkx来生成一个图networkx随机图生成总结python networkx来生成一个图 使用python提供的第三方的库networkx,networ...
    99+
    2022-12-16
    python networkx networkx生成一个图 python networkx生成图
  • 怎么使用PyQt5制作一个数据图表生成器
    这篇文章主要介绍了怎么使用PyQt5制作一个数据图表生成器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我的需求:手动配置X轴、Y轴、图表标题等参数自动通过Pyecharts...
    99+
    2023-06-29
  • 基于PyQt5如何制作一个gif动态图片生成器
    这篇文章的内容主要围绕基于PyQt5如何制作一个gif动态图片生成器进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!这个小工具制作的目的是为了将多张图...
    99+
    2023-06-28
  • 如何使用Vue动态生成form表单
    这篇文章将为大家详细讲解有关如何使用Vue动态生成form表单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、...
    99+
    2022-10-19
  • 使用python怎么生成一个字母数字验证码图片
    今天就跟大家聊聊有关使用python怎么生成一个字母数字验证码图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-14
  • 使用java如何生成一个验证码图片
    本文章向大家介绍使用java如何生成一个验证码图片的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程...
    99+
    2023-06-06
  • 如何在java中利用cglib动态生成一个实体bean
    如何在java中利用cglib动态生成一个实体bean?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。maven依赖:<dependency>&nbs...
    99+
    2023-06-06
  • 使用Vue怎么动态生成表格的行和列
    这篇文章将为大家详细讲解有关使用Vue怎么动态生成表格的行和列,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体的实现代码如下:<template&g...
    99+
    2022-10-19
  • 如何使用PHP实现动态表单生成工具
    小编给大家分享一下如何使用PHP实现动态表单生成工具,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!表单包含多种input类型,包括 hiiden类型 ,text类...
    99+
    2023-06-29
  • python中怎么使用Pillow做动态图在图中生成二维码及图像处理
    这篇文章主要讲解了“python中怎么使用Pillow做动态图在图中生成二维码及图像处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中怎么使用Pillow做动态图在图中生成二维...
    99+
    2023-06-29
  • 基于python使用Pillow做动态图在图中生成二维码以及图像处理
    目录1.什么是Pillow2.pillow图像处理的简单使用图片信息显示修改图片尺寸裁剪旋转图片为图片添加水印生成gif图片1.什么是Pillow 首先我们需要了解一下PIL(Pyt...
    99+
    2022-11-13
  • 使用python怎么创建一个递增生成器
    本篇文章为大家展示了使用python怎么创建一个递增生成器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多...
    99+
    2023-06-14
  • 使用python怎么编写一个自动生成sql语句的脚本
    这篇文章主要介绍了使用python怎么编写一个自动生成sql语句的脚本,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-06
  • 一文教会你用Python绘制动态可视化图表
    目录前言安装模块可视化动态图太阳图指针图桑基图平行坐标图总结前言 对数据科学家来说,讲故事是一个至关重要的技能。为了表达我们的思想并且说服别人,我们需要有效的沟通。而漂漂亮亮的可视化...
    99+
    2022-11-11
  • 使用Python怎么生成一个二维码并解析
    这篇文章给大家介绍使用Python怎么生成一个二维码并解析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。生成二维码生成二维码的话,python有两个第三方模块:qrcode和MyQR可以帮我我们生成二维码,下面来看一下...
    99+
    2023-06-08
  • 利用Java如何实现一个随机生成动态验证码功能
    利用Java如何实现一个随机生成动态验证码功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言相对来说呢,jpg格式的相对来说容易破解一点,当然也取决于你的干扰元素,元素...
    99+
    2023-05-31
    java 动态 验证码
  • 怎么在html2中使用canvas生成一个清晰的图片
    怎么在html2中使用canvas生成一个清晰的图片?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。基本用法window.html2canvas(dom,&nbs...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作