在数据分析中使用GIF并发现其严肃的一面
照片由
Greg
Rakozy在
Unsplash上拍摄
感谢社交媒体,您可能已经对GIF非常熟悉。在短短的几帧中,他们传达了非常具体的反应,只有图片才能传达。传递数据时,GIF可以产生类似的效果。
GIF或图形交换格式是一种流行的图像格式,因为它们是许多应用程序接受的紧凑、计算成本低廉的文件。本质上,GIF将一堆图片串在一起,就像一本翻书。这种类似于活页簿的格式是说明跨多个图表的趋势的理想方式。通过在帧之间快速移动,它们以静态图无法快速传达的方式揭示数据中的趋势和模式。
图片由作者提供。
代码
这个项目的repo可以在这里找到。
从现有图像创建GIF
首先,加载数据。本文使用bokeh图书馆的人口数据集。
下面看一下数据集的结构:
图片由作者提供。
接下来,创建filter_loc一个根据国家/地区过滤数据集的函数。
现在,创建一个函数来绘制数据集中每年的人口密度。此函数创建构成GIF的图(或帧)。
使用循环调用make_plot所有感兴趣的年份。尽管数据集包含预测数据,但此GIF仅使用过去几年的数据。
获取这些单独的图像并将它们串在一起以生成GIF。
瞧!
图片由作者提供。
创建GIF而不输出多个图像
在上面的示例中,代码输出静态图,然后将它们编译成GIF。但是,可能存在您不想输出绘图的情况。例如,如果GIF有帧怎么办?如果GIF捕获了所有相关信息,为什么还要浪费存储空间?
matplotlib可以将函数作为输入并创建GIF,而不是将文件名列表作为输入。使用函数消除了保存单个帧的需要。
首先,初始化绘图,以便该函数稍后可以覆盖。
接下来,定义run为GIF创建不同帧的函数。
GIF与静态图
GIF在很短的时间内显示大量数据,并且在某些情况下比静态图更有优势。为了说明这一点,将美国人口密度GIF与下面的静态图进行比较。两者都显示完全相同的信息。然而,GIF更清楚地显示了人口如何趋向于均匀分布。
作者图片
一个图中的多个GIF
如果你想比较多个国家多年来的人口分布怎么办?在一个图形上绘制多个GIF可以更轻松地比较图表。
首先,创建必要的框架。
接下来,创建一个具有多个轴的图形。在适当的轴上绘制上面创建的框架。
这是成品:
图片由作者提供。
上图并排绘制了三个GIF,以说明阿富汗、印度和美国的人口分布差异。之所以选择这三个国家,是因为它们的经济和生活水平不同。
由于高生育率和低存活率,阿富汗的人口分布偏年轻。印度的分布逐渐变得更加均匀。美国图显示了代表婴儿潮一代的集群,但总体而言,趋向于均匀分布。
结论
感谢您阅读我的文章。我希望这篇文章能激发您考虑使用GIF来整合数据并说明趋势。如果你喜欢我的内容,请考虑