Pine 发自 凹非寺
量子位 | 公众号 QbitAI
数据可视化动画还在用Excel做?
(相关资料图)
现在一个简单的Python包就能分分钟搞定!
而且生成的动画也足够丝滑,效果是酱紫的:
这是一位专攻Python语言的程序员开发的安装包,名叫 Pynimate 。
目前可以直接通过PyPI安装使用。
想要使用Pynimate,直接import一下就行。
import pynimate as nim
输入数据后,Pynimate将使用函数Barplot()来创建条形数据动画。
而创建这种动画,输入的数据必须是pandas数据结构 (如下) ,其中将 时间列 设置为索引,换句话说索引代表的是自变量。
time, col1, col2, col32012 1 2 12013 1 1 22014 2 1.5 32015 2.5 2 3.5
具体的代码形式如下:
import pandas as pddf = pd.read_csv("data"csv").set_index("time")
比如要处理具体的数据,写成代码应该是这样子的。
df = pd.DataFrame( { \"time\": [\"1960-01-01\", \"1961-01-01\", \"1962-01-01\"], \"Afghanistan\": [1, 2, 3], \"Angola\": [2, 3, 4], \"Albania\": [1, 2, 5], \"USA\": [5, 3, 4], \"Argentina\": [1, 4, 5], }).set_index(\"time\")
此外,要制作条形数据动画,Barplot还有三个必需的参数得注意:data、time_format和ip_freq (Interpolation frequency) 。
data就是表格的数据,这里也就不再赘述。
time_format是指数据索引的时间日期格式,一般为:”%Y-%m-%d”。
最后是ip_freq,它是制作动画中比较关键的一步,通过线性插值使动画更加流畅丝滑。
一般来说,并不是所有的原始数据都适合做成动画,现在一个典型的视频是24fps,即每秒有24帧。
举个栗子,下面这个表格中的数据只有三个时间点,按理说只能生成3帧视频,最终动画也只有3/24秒。
time, col1, col22012 1 3 2013 2 2 2014 3 1
这时候,ip_freq插值 (线性) 就开始发挥作用了,如果插值是一个季度,则得出的数据就变成了这样:
time col1 col22012-01-01 1.00 3.002012-04-01 1.25 2.752012-07-01 1.50 2.502012-10-01 1.75 2.252013-01-01 2.00 2.002013-04-01 2.25 1.752013-07-01 2.50 1.502013-10-01 2.75 1.252014-01-01 3.00 1.00
具体的插值时间间隔为多久,则要视具体的数据而定,一般绘制大数据时,设置为ip_freq = None。
至此,就能生成数据动画了,完整代码如下所示:
from matplotlib import pyplot as pltimport pandas as pdimport pynimate as nimdf = pd.DataFrame( { \"time\": [\"1960-01-01\", \"1961-01-01\", \"1962-01-01\"], \"Afghanistan\": [1, 2, 3], \"Angola\": [2, 3, 4], \"Albania\": [1, 2, 5], \"USA\": [5, 3, 4], \"Argentina\": [1, 4, 5], }).set_index(\"time\")cnv = nim.Canvas()bar = nim.Barplot(df, \"%Y-%m-%d\", \"2d\")bar.set_time(callback=lambda i, datafier: datafier.data.index[i].year)cnv.add_plot(bar)cnv.animate()plt.show()
这是插值为两天,生成的动画效果。
最后还有一个问题,那就是保存动画,有两个格式可以选择:gif或者mp4。
保存为动图一般使用:
cnv.save(\"file\", 24, \"gif\")
若要保存为mp4的话,ffmpeg是个不错的选择,它是保存为mp4的标准编写器。
pip install ffmpeg-python
或者:
conda install ffmpeg
当然,同样也可以使用Canvas.save()来保存。
cnv.save(\"file\", 24 ,\"mp4\")
julkar9 ,Python/Flutter 开发人员,研究的方向为 数据分析与可视化 。
小哥表示,Pynimate还会不断更新,目前正在接受大家的反馈,之后还会上线等值区域图等功能。
他还开发了一个应用程序:Chatmetry,同样也与数据统计有关,是一个用于创建whatsapp聊天统计数据的机器人应用程序。
这个程序可以从导出的聊天中生成各种统计信息,同时支持个人和群组聊天,并且是完全离线的,既不会保存也不会共享。
传送门: https://julkaar9.github.io/pynimate/
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
Pine发自凹非寺量子位|公众号QbitAI数据可视化动画还在用Excel做?现在一个简单的Python包就能分分钟搞定!而且生成的动画也足够丝滑,效果是
弟弟攒5年压岁钱给姐姐买万元金镯今天的热度非常高,现在也是在热搜榜上了,那么具体的弟弟攒5年压岁钱给姐姐买万元金镯是什么情况呢,大家可
星标这个公众号,每一款好酒都不错过奥地利就是一个充满宝藏的国家,奥地利葡萄酒的风土之美,尚不为人所知,这家神奇的酒庄还有不少其他的惊
为什么说,雷克萨斯ES只有全系降价5万,才能拯救低迷的销量!
针对节后夜间返程客流集中到达情况,北京西站派出所还与车站客运部门合作,在车站站台、出口处、广场等关键部位加派警力、加强巡逻,做好客流
新华社北京1月25日电新春佳节,北京延庆世界葡萄博览园冰雪大世界的休闲娱乐区充满欢声笑语;京郊龙庆峡冰灯冰雪嘉年华吸引各
1、真实感2、在辨别和田玉的时候,我们需要先看它的质地。一般和田玉看起来油油的,质地很细腻。在强光照射下,会呈现半透明至不透明,内部结
春节期间仍是呼吸道传染病的高发期,而老年人是感染新冠病毒后发生重症的高危人群。春节期间探望老人要注意什么?老年人出现低烧、干咳等症状
猫眼专业版数据显示,2023年1月25日11时20分,2023年春节档(1月21日-1月27日)总票房(含预售)破42亿!《满江红》《流浪地球2》《熊出没·伴我
1、准备画图用的纸,尺,铅笔,马克笔。2、首先,用尺子和铅笔画出天安门广场的屋顶。形状比梯形多两点。3、然后画中间连接部分和二楼屋顶。4
奇才将八村塁送至湖人得到纳恩和三个次轮签,纳恩,湖人,奇才,公牛,威少,八村塁,nba,次轮签
1、加利福尼亚大学(尔湾)(UniversityofCalifornia,Irvine,简称UCIrvine或U
北京今天最高气温仅零下5℃风寒效应明显
新春之际,湖南省怀化市芷江侗族自治县这座小县城年味正浓,尤其是现今中国最大的风雨桥——龙津风雨桥上,人来人往。风雨桥,是侗族建筑“...
五河县气象局发布寒潮蓝色预警【IV级 一般】【2023-01-23】
兔年咏兔,有关兔子的诗词,兔年祝你宏图大展!
新春走基层|除夕,天山脚下夜话新春新愿望
1、米兔网是国内首家集折扣、返利、分享为一体的纯买家导购平台。2、提供购物返现金、独享折扣商品、最新最全优惠信息等服务,
揣着40万,买豪华品牌中大型轿车,那么奔驰E级绝对是很多人的首选。
新的一年前“兔”无量、两岸交流合作发展“兔”飞猛进、两岸青年一起大展宏“兔”
三门峡消防组织重点单位持续开展春节期间“六个一”活动
北京商报讯(记者赵述评)1月20日,拼多多发布了《2023年夜饭报告》。春节前夕,全国各地消费者置办年夜饭的热情一路走高,肉类、水饺、汤圆、
1月20日,中国足协发布了新一期女足集训的名单,王霜、王珊珊、唐佳丽等人悉数入选。通知全文如下:各有关会员协会、女子足球俱乐部:为全力备
春节前为外地群众追回被骗款,丹东公安收到一沓感谢信
门票价格:88元(优惠票79 9元)★限时烟花节早鸟优惠票票价:29 9元(原价88元)购买时间:1月20日前使用时间:有效期至2023年1月26日注:70周岁
春节将至,为营造一个干净整洁的人居环境和欢乐祥和的节日氛围,助力打造幸福和谐社区。1月20日上午,石佛办事处通和社区开展环境卫生清洁活动
上海过年期间地铁还正常运行吗?春节还能打到车吗?面对这些和春节假期出行有关的问题,市交通委介绍,本市不断深化建设“出行即服务”(Maa...
一、 属狗和牛相配吗: 在十二生肖中,生肖狗和生肖牛相刑,配对是下等婚配。属狗人和属牛人在一起,一生中是非不断。也许你
春节期间,全省4A级以上景区推出免门票特惠服务。其中1月28日—2月28日,全省所有5A级旅游景区免首道门票或半价。购票入口:点击进入交通:自
广西开出新年首趟中越年货班列---1月19日12时,一趟满载黑木耳、风味蘑菇、糖果、啤酒等特色食品以及日用品等货物的X9101次中越班列从广西南宁
Copyright © 2015-2022 北冰洋服装网版权所有 备案号:沪ICP备2020036824号-3 联系邮箱:562 66 29@qq.com