数据动图
最近看到朋友分享的收益率动图,觉得还挺有意思,于是研究了一下,编了个程序实现。
做了两类动图,一类是柱状图动态排行,一类是动态变化曲线。
简单说说实现思路。
柱状图动态排行
柱状图动态排行略微复杂一点,实现思路如下:
1. 准备数据
准备要显示的二维数表数据。X为时间,Y为数据变量,Y有多列:Y1、Y2、……、Yn。
2. 加密数据
如果数据量比较少,则对数据进行插值加密,线性插值即可。
3. 数据排序
对每个时间点数据按降序进行排序,获得排序编号矩阵。
4. 再次加密
这次加密很重要,目的是实现排序的动态转变过程。之前的排序都是整数,排序切换显示会很生硬,通过插值计算加密插入浮点排序数据,就能生动体现排序的动态变化过程。
顺便说一下,通过采用不同的插值算法,可实现不同的动态切换视觉效果。如采用线性差值,为匀速平移效果,见本文中的GIF动图;如采用样条差值,则有变速切换效果,见文末视频号。
5. 数据绘图
每个时间步的数据绘制一张柱状排行图,形成一系列图片。采用水平柱状图。
绘图前,对当前时间数据按排序序号进行重新排序。排序大小表征了柱状图的位置,绘图时将排序序号小值显示在绘图区上方。
坐标轴的坐标值改用变量名代替,为各变量柱状图设置不同的颜色,并在柱状图右侧显示具体数据值。
因绘图未体现时间,在绘图区右下角增加时间信息。
绘图常见的比例设置有1:1、7:6、 4:3、16:9,竖屏则反过来。
1:1=1,常见分辨率600*600、800*800、1080*1080;
7:6=1.17, 常见分辨率1260*1080,该比例为视频号前期竖屏推荐比例,但现在视频号也支持16:9;
4:3=1.33,常见分辨率800*600、960*720、1440*1080,为通常相机的传感器成像比例;
16:9=1.78,常见分辨率1920*1080、1280*720,为宽屏视频常用比例。
6. 生成动画
将系列图片输出成动画,可为GIF动图或MP4等格式视频。输出视频时设置好两张图片之间的时间间隔。常见的帧频有25fps、30fps、60fps,分别对应时间间隔0.04s、0.033s、0.017s。
视频可再配个背景音乐,如很火的 victory。
公众号插入视频稍麻烦点,还有审核过程。可插入GIF直接显示动图,但注意最大不能超过10M,要控制下分辨率和帧频。
好了,完毕。就这么几步,思路理清了很简单。当然,也可以显得复杂点,比如取一个高端大气上档次的装X名字,叫「二维数据的截面提取重构及动态可视化技术研究」,哈哈。
用白酒行业的十年业绩做了一个效果展示,如下。但因公众号图片大小限制,帧频较低。看高帧频和排行变速切换效果版请点文末视频号。
动态变化曲线
再来看看动态变化曲线,这个更简单一些。
主要区别是:
数据不需要排序。
用曲线图代替柱状图。为了效果美观,可采用两次绘图,一次绘线,一次绘符号,符号只显示在端点。
增加图例显示。
坐标轴根据所显示数据范围动态变化。
效果图如下:
欢迎戳下方视频号观看