不需要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实现动态地图_使用Python、Geopandas和Matplotlib制作gif动态地图相关推荐

  1. python matpoltlib绘制动态图_使用Python、Geopandas和Matplotlib制作gif动态

    原标题:使用Python.Geopandas和Matplotlib制作gif动态 不需要Photoshop:仅使用Python和命令行制作动画图表. 作为一种编程语言,Python非常灵活.这使得有时 ...

  2. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  3. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  4. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  5. python社区发现_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理

    大数据时代到来,随着数据的逐步开放,数据工作者们或多或少都要接触到时空数据.在处理时空数据的时候,你不仅要数据处理,还需要会GIS,最重要的它是一门艺术,要用你的审美,要出很好看的可视化图! 以前,我 ...

  6. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  7. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  8. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  9. python 免费空间_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

最新文章

  1. 【C#】登陆次数限制
  2. 距离高效率学习CV算法我还有多远的距离?
  3. [转]Asp.net 将js文件打包进dll 方法
  4. 详解 WSUS 部署
  5. No report created. Execute hbck_chore_run in hbase shell to generate a new sub-report.
  6. python基础入门(1)
  7. 【原】常见CSS3属性对iosandroidwinphone的支持
  8. ssl charles 参数看不到_偷偷告诉你Charles的秘密
  9. 超轻量级Web安全漏洞扫描工具Netsparker使用教程介绍
  10. 山东大学软件学院2022数据化企业期末复习总结
  11. Mybatis Plus 3 oracle 自增序列
  12. kafka 精准一次性
  13. vue二级路由和重定向问题
  14. 1、VS2019配置glfw和glad
  15. solr引入mysql数据库数据,出现Requests: 1, Fetched: 0, Skipped: 0, Processed: 0
  16. 智能科技五大创新商业模式
  17. 4399 面试笔试题
  18. 谁偷了我的奶酪(上)
  19. [置顶] 我奋斗了18年才和你坐在一起喝咖啡
  20. 上海智慧城市发展研究院领导一行莅临闪马智能,调研视频智能分析技术应用能力

热门文章

  1. 推荐书籍:网络流量整形与带宽控制技术
  2. oracle psu无法开库,Oracle 12.2应用PSU后数据库无法启动
  3. 斩波电路---视频课笔记
  4. CCRC信息安全服务资质
  5. 利用c#快速知道哪些qq好友空间屏蔽了自己
  6. Mr.Alright--- Android 11(R)桌面文件夹预览布局类似9宫格的实现
  7. 测试手机是否降频软件,如何检测自己的iPhone是否被苹果降频 降频的处理方法有哪些...
  8. 在Windows10上编译SWASH模型
  9. 网易2019实习生招聘-牛牛的naozhong
  10. css+html 嵌套表格做简单网页