原标题:使用Python、Geopandas和Matplotlib制作gif动态

不需要Photoshop:仅使用Python和命令行制作动画图表。

作为一种编程语言,Python非常灵活。这使得有时可以在几行代码中进行大量不同的可视化成为可能。但是现在有了很多不同的图表网站和软件,为什么还要编写代码?我们不能只使用相关网站的GUI上传数据,调整范围,点击导出png图片结果吗?

是,当然可以。有时,如果您需要快速的制作一次性图表或地图,这是最佳选择。但是当你需要制作大量的地图时,使用Python的强大功能会产生更好的结果。

本文将介绍如何创建一个能随时间数据变化的动画gif地图。最重要的是,本教程将从头到尾仅使用Python和一些命令行工具,无需在Photoshop或其他软件中进行任何操作。

正如上面所说,本文的方法在具体工作中也许并不是最佳的方法,但如果考虑到制图的速度、可重复性和一致性,我认为这是一个很好的方法。

为什么选择GIF地图?

在过去几年中,gif图表似乎已经在社交媒体上大受欢迎。像“金融时报”和“经济学人”这样的出版商花费了更多的时间来精简和完善他们的数据产品,以便于在Twitter和Instagram等平台上更好地展示信息。也许更重要的是,gif图表允许在静态图表显示的基础上创建一个新的数据维度。

Gif动图在数据可视化中的应用场景:

通过注释或突出显示来引导用户浏览同一图表中最重要的点

通过比较显示两个不同的图表

显示相同的图表随时间的变化(这是我们要做的)

该清单并非详尽无遗,用例也在不断扩大,可以说动态图表既炫酷又实用(正确使用时)。

下面让我们来开始制作。

如何制作一个gif动态地图

这是您应该开始的:

加载shapefile(地图文件)

加载要显示的csv数据文件

融合这两个类型的数据

绘制地图并设计样式

现在,我们将使用Python中for()循环的强大功能,将多个不同时期的数据展示在相同的地图上。因为我们想要显示随时间的变化,我们需要确保我们的数据包含年份作为变量。为便于标记,我们确保数据的每个列标题都是年份数字(即不同年的数据分别放在不同列)。

为了遍历每列的数据,我们需要一个字符串列表来调用每列的名称。让我们创建一个列表变量,其中包含每列的年份(格式化为字符串)。我们还设置一个输出路径,以便将每年的数据地图保存到一个文件夹中。

最后,在创建地图之前,我们要为vmin和max值设置一致的全局变量。这将设置颜色范围的值。如果你事先没有设置它,Matplotlib将在每次for循环迭代时改变等值区的范围,因此很难看出值随时间的增加或减少的方式。

写for循环

for()循环使用起来相当简单,for()循环中语法意思大概如下:

对于list_of_years列表中的每一年,运行以下代码。

当我们列表中的所有年份都通过代码时,停止循环。

如果您运行此代码并打开刚刚设置的输出路径文件夹,您应该会看到许多地图,每个地图的颜色略有不同,代表不同年份的数据。您可能会想:一旦做成地图动画,我们将如何知道年份的变化?

我们可以在底部设置一个简单的日期范围(2007-2015),但for()循环可以为我们提供更好的解决方案。由于我们已经将每列的年份保存为变量中的字符串,因此我们可以为每个地图添加不同的注释(对应于数据的年份)。

根据我们的for()循环,变量'year'将是每次for循环运行的列的年份。使用这个逻辑,我们可以插入'year'作为fig.annotate()参数的变量。

现在,每次for循环运行时,不同的年份将作为注释插入到地图上。使用相同的逻辑,我们也可以将文件名设置为每年开始,这样就很容易找到每年对应的地图。在for()循环中添加此代码将添加年份注释。

重新运行代码,您的地图会替换为新地图,每个地图的左下角都有年份注释。如果你从上到下翻阅地图,你就可以了解到你的gif会是什么样子。

制作GIF

我们在进行GIF制作之前,要将我们得到的所有png格式的地图图片,转化为jpg格式,图片格式转化有多种方法,下面举了一个在python中利用opencv(cv2)进行图片格式转化的例子,仅供参考。

接下来我们可以开始制作GIF动态地图了,有很多方法可以制作GIF动图,我们使用的是ImageMagick,原因有以下几点:

它相对容易安装和设置

它允许您在一行代码中设置转换时间,裁剪大小和文件格式

它超级快

ImageMagick的文档非常详尽。如果您尚未安装它,请查看其官方文档页面。

首先检查您是否正确安装了ImageMagick:

在命令行中输入并运行:

convert –version

如果已成功安装了ImageMagick,将显示包含版本和版权声明的消息。在系统上安装ImageMagick后,转到包含我们刚制作的所有地图的目录。现在我们需要运行一行代码来创建我们的gif。这行代码的作用如下:

convert:获取所有这些文件并进行更改

-delay 60:设置每个图像在进入下一个图像之间经过的时间

-loop 0:设置无限循环

插入将要转换的所有文件名

my_map.gif

这是在终端中使用的代码:

现在看看自动创建的新文件“new_map_normal.gif”,你看到的图像应该如下:

使用gif地图可以成为深入分析数据的一个很好的切入点。 此外,您可以将任何具有时间序列数据的图表转换为gif动图 - 我们这里只是选择了地图,因为它看起来更炫酷。

如果您有任何疑问,欢迎与我交流,后面会在评论区给出源码链接。返回搜狐,查看更多

责任编辑:

python matpoltlib绘制动态图_使用Python、Geopandas和Matplotlib制作gif动态相关推荐

  1. python怎么绘制渐变图_用Python画colorbar渐变图+修改刻度大小+修改渐变颜色

    Draw Gradient Color Map using python github源码地址: 欢迎关注我! pratical_skills_tools Draw Gradient Color Ma ...

  2. python如何绘制蜘蛛图_用Python写的图片蜘蛛人代码

    #coding=utf-8 import os import sys import re import urllib URL_REG = re.compile(r'(http://[^///]+)', ...

  3. python 二维强度图_荐 python数据分析matplotlib库使用之二维图形绘制

    本篇内容会在后期不定时更新 什么是matplotlib matplotlib是最流行的python底层绘图库,主要做数据可视化图表. 为什么要学习matplotlib 能将数据进行可视化,更直观的呈现 ...

  4. python 画股票走势图_使用Python matplotlib绘制股票走势图

    一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使用心得进行 ...

  5. python画三维折线图_使用Python的matplotlib画折线图,柱状图,三维图

    因为在各种场景下需要各种实验数据的对比图像,有的中还要求dpi,这些在Python中的matplotlib中都可以实现,下面是总结的各种画图命令. 打包文件:https://download.csdn ...

  6. python画图程序没有图_解决python中使用plot画图,图不显示的问题

    解决python中使用plot画图,图不显示的问题 对以下数据画图结果图不显示,修改过程如下 df3 = {'chinese':109, 'American':88, 'German': 66, 'K ...

  7. python画4维图_用Python 画个六维图,涨姿势了

    关注后你就是我的人了 我们的大脑通常最多能感知三维空间,超过三维就很难想象了.尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面. 来自维基百科 不过,我们仍然可以绘制出多维空间,今天就来用 ...

  8. python 网页樱花动态图_用 Python 绘制美丽的樱花

    可使用以下3种方法引入: 二.使用 turtle库使用起来也很简单,主要就是利用几个核心的控制代码 turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点, turtle.fd ...

  9. python如何绘制蜘蛛图_蜘蛛网图实现Python可视化的方法

    数据可视化是数据科学或机器学习项目中十分重要的一环.通常,你需要在项目初期进行探索性的数据分析(EDA),从而对数据有一定的了解,而且创建可视化确实可以使分析的任务更清晰.更容易理解,特别是对于大规模 ...

最新文章

  1. Internet导致业务绩效降低的4个怪原因—Vecloud微云
  2. 二分查找的基本原理及实现
  3. 假期宣言2018-01-10
  4. 11. Java基础之继承
  5. 利用代码生成right scope数据
  6. aws emr 大数据分析_DataOps —使用AWS Lambda和Amazon EMR的全自动,低成本数据管道
  7. vim命令模式和底线_人生苦短!老鸟带你用Vim偷懒!
  8. cmake笔记(1)
  9. Android FrameLayout和AbsoluteLayout示例教程
  10. ubuntu16.04编译安装mysql源码
  11. ThingsBoard 开源技术体系总览
  12. 龙果开源支付系统 架构全新升级
  13. 安卓软件开发面试题!五年Android开发者小米、阿里面经,小白也能看明白
  14. excel合并两列内容_Python实战:合并 Excel 表格
  15. 原型工具摹客Mockplus快速入门一工具介绍
  16. 安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序
  17. ITSM系统核心流程
  18. Linux笔记整理(1)系统的加载和main函数执行准备
  19. win7开机后资源管理器未响应或者停止问题
  20. 将钞票分解为多张钞票的和

热门文章

  1. 一文玩转 EhCache 缓存框架!
  2. 全网最详细的docker配置nginx http2 优化高速访问
  3. 摔倒、摔倒检测数据集
  4. JQuery Datatables —— 自定义导出列
  5. JQuery Datatables 在Bootstrap tab中列名无法对齐的问题
  6. Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration.
  7. 数据结构php语言,PHP语言做网页开发,会用到什么数据结构,算法?
  8. 中南大学12月13日考c语言,中南大学2010级C语言试卷
  9. bytes数组转string指定编码_一篇文章弄懂Python中所有数组数据类型
  10. c语言程序编写一朵花,一朵花(中英双语)