查看原文
其他

数据动图

微光探索 微光探索
2024-09-20

最近看到朋友分享的收益率动图,觉得还挺有意思,于是研究了一下,编了个程序实现。


做了两类动图,一类是柱状图动态排行,一类是动态变化曲线。


简单说说实现思路。





柱状图动态排行


柱状图动态排行略微复杂一点,实现思路如下:


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名字,叫「二维数据的截面提取重构及动态可视化技术研究」,哈哈。


用白酒行业的十年业绩做了一个效果展示,如下。但因公众号图片大小限制,帧频较低。看高帧频和排行变速切换效果版请点文末视频号。







动态变化曲线


再来看看动态变化曲线,这个更简单一些。


主要区别是:


  1. 数据不需要排序。

  2. 用曲线图代替柱状图。为了效果美观,可采用两次绘图,一次绘线,一次绘符号,符号只显示在端点。

  3. 增加图例显示。

  4. 坐标轴根据所显示数据范围动态变化。


效果图如下:




 

欢迎戳下方视频号观看



继续滑动看下一个
微光探索
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存