新冠自去年底开始(目前所知),今年1月底爆发以来,已经过去了4个来月。全球的确诊人数从几千,调到几万,几十万,再到目前的几百万,一次次刷新了我们的认知。
为了更加生动的展现过去4个月的变化趋势,我们用数据挖掘手段制作了下面的视频。视屏是各国或地区现有确诊人数变化动态。现有确诊人数定义为:累计确诊人数 减去 死亡人数 再减去 病愈人数。即目前还在生病,暂时没有康复的人数:
上面的视屏其实挺震撼的,世界本来有一个机会遏制这个疫情全球爆发,却浪费了1个月左右时间。现有确诊人数升了又降,降了又升!
技术来说,上面的视屏制作过程简单实用,分两步实现:
1)用python生成每天的地图可视化图片
2)用Linux命令行一键生成视屏
 1. 用python 生成图片
下面举例为jupyter notebook环境中:
首先你的数据格式可能是这样的(data frame名字 df):
下面的code可以用来生成世界地图热力图:
import math
import plotly.express as px
import plotly.offline as pyo
import plotly.graph_objs as go
df['size']=df['现有确诊'].apply(lambdax: math.sqrt(x) if x>0 else 0)
fig = px.scatter_geo(df, lat='纬度',lon='经度',
                     title='公众hao:robot-learner',
                     size='size',
                     color='现有确诊'
                     )
fig.write_image("test.png")
效果如下:
用上面的方法,我们把每一天的数据生成一张张的图片。把这些图片存下来,总共100多张图片。
 2. Linux下生成视屏
一行命令即可搞定:
ffmpeg -r 5 -i pic%3d.png -pix_fmt yuv420p -r 24 movie.mp4
上面ffmpeg是app,如果没有装,apt-get或者yum install 安装一下即可。
-r 5:是每秒钟用5张图片作为素材,这个控制了视屏的时间长度。
-r 24:是为了达到视屏连贯的要求,每秒钟最好用24张图片。所有中间不够的图片,ffmpeg会重复使用5张图片来填充。
pic%3d.png: 我们的输入图片都用 pic001.png, pic002.png。。。pic108.png格式命名,所以按照顺序使用。
-pix_fmt yuv420p:需要用来和一些播放器兼容
Done! 这个方法简单吧?
往期好评文章推荐
继续阅读
阅读原文