python matpoltlib绘制动态图_使用Python、Geopandas和Matplotlib制作gif动态
原标题:使用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动态相关推荐
- python怎么绘制渐变图_用Python画colorbar渐变图+修改刻度大小+修改渐变颜色
Draw Gradient Color Map using python github源码地址: 欢迎关注我! pratical_skills_tools Draw Gradient Color Ma ...
- python如何绘制蜘蛛图_用Python写的图片蜘蛛人代码
#coding=utf-8 import os import sys import re import urllib URL_REG = re.compile(r'(http://[^///]+)', ...
- python 二维强度图_荐 python数据分析matplotlib库使用之二维图形绘制
本篇内容会在后期不定时更新 什么是matplotlib matplotlib是最流行的python底层绘图库,主要做数据可视化图表. 为什么要学习matplotlib 能将数据进行可视化,更直观的呈现 ...
- python 画股票走势图_使用Python matplotlib绘制股票走势图
一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使用心得进行 ...
- python画三维折线图_使用Python的matplotlib画折线图,柱状图,三维图
因为在各种场景下需要各种实验数据的对比图像,有的中还要求dpi,这些在Python中的matplotlib中都可以实现,下面是总结的各种画图命令. 打包文件:https://download.csdn ...
- python画图程序没有图_解决python中使用plot画图,图不显示的问题
解决python中使用plot画图,图不显示的问题 对以下数据画图结果图不显示,修改过程如下 df3 = {'chinese':109, 'American':88, 'German': 66, 'K ...
- python画4维图_用Python 画个六维图,涨姿势了
关注后你就是我的人了 我们的大脑通常最多能感知三维空间,超过三维就很难想象了.尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面. 来自维基百科 不过,我们仍然可以绘制出多维空间,今天就来用 ...
- python 网页樱花动态图_用 Python 绘制美丽的樱花
可使用以下3种方法引入: 二.使用 turtle库使用起来也很简单,主要就是利用几个核心的控制代码 turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点, turtle.fd ...
- python如何绘制蜘蛛图_蜘蛛网图实现Python可视化的方法
数据可视化是数据科学或机器学习项目中十分重要的一环.通常,你需要在项目初期进行探索性的数据分析(EDA),从而对数据有一定的了解,而且创建可视化确实可以使分析的任务更清晰.更容易理解,特别是对于大规模 ...
最新文章
- Internet导致业务绩效降低的4个怪原因—Vecloud微云
- 二分查找的基本原理及实现
- 假期宣言2018-01-10
- 11. Java基础之继承
- 利用代码生成right scope数据
- aws emr 大数据分析_DataOps —使用AWS Lambda和Amazon EMR的全自动,低成本数据管道
- vim命令模式和底线_人生苦短!老鸟带你用Vim偷懒!
- cmake笔记(1)
- Android FrameLayout和AbsoluteLayout示例教程
- ubuntu16.04编译安装mysql源码
- ThingsBoard 开源技术体系总览
- 龙果开源支付系统 架构全新升级
- 安卓软件开发面试题!五年Android开发者小米、阿里面经,小白也能看明白
- excel合并两列内容_Python实战:合并 Excel 表格
- 原型工具摹客Mockplus快速入门一工具介绍
- 安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序
- ITSM系统核心流程
- Linux笔记整理(1)系统的加载和main函数执行准备
- win7开机后资源管理器未响应或者停止问题
- 将钞票分解为多张钞票的和
热门文章
- 一文玩转 EhCache 缓存框架!
- 全网最详细的docker配置nginx http2 优化高速访问
- 摔倒、摔倒检测数据集
- JQuery Datatables —— 自定义导出列
- JQuery Datatables 在Bootstrap tab中列名无法对齐的问题
- Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration.
- 数据结构php语言,PHP语言做网页开发,会用到什么数据结构,算法?
- 中南大学12月13日考c语言,中南大学2010级C语言试卷
- bytes数组转string指定编码_一篇文章弄懂Python中所有数组数据类型
- c语言程序编写一朵花,一朵花(中英双语)