文章来源于Python大数据分析,作者费弗里

本文示例代码、数据已上传至Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集。

图1

更令人兴奋的是Kepler.gl在去年推出了基于Python的接口库keplergl,结合jupyter notebook/jupyter lab的相关拓展插件,使得我们可以通过编写Python程序配合Kepler.gl更灵活地制作各种可视化作品。

图2

而随着近期keplergl的更新,更多的新特性得以同步到其Python生态中,本文就将针对其中的路径动画的制作方法进行介绍。

2 基于keplergl的路径动画

我们要制作的路径动画图主要用于表现特定路径上流的运动,譬如图3的例子来自Kepler.gl官方示例:

图3

而在官方的说明中描述了要绘制路径动画需要输入的数据格式:

图4

这是一个典型的GeoJSON格式LineString要素,特别的是其"coordinates"键对应的值不同于常规的[经度, 纬度]格式,而是代表着[经度, 纬度, 高度, 时间戳],其中高度非必要,可以设置为0,而时间戳则声明了轨迹动画在该时间点会到达的该点位置,即线要素上连续的点位置+时间戳定义了轨迹动画的运动模式,下面我们分步骤来实现。

2.1 构造数据与初始化html

这里我们以重庆市渝中区的OSM路网为演示示例数据,首先我们需要利用json模块来读取本地重庆市渝中区_osm路网_道路.geojson数据:

from keplergl import KeplerGl
import json
import timewith open('geometry/重庆市渝中区_osm路网_道路.geojson') as g:raw_roads = json.load(g)

随便打印出其中包含的某个线要素:

图5

可以看到,这时线要素内部包含的点还是[经度, 纬度]的格式,接下来我们为其虚构上时间戳信息,为了保证整个路网可视化的协调一致,将所有线要素的时间跨度固定在一个小时之内,保证每段路上从头到尾的轨迹动画都保持一致:

start_time = time.mktime(time.strptime('2020-05-29 20:00:00', "%Y-%m-%d %H:%M:%S"))for i in range(raw_roads['features'].__len__()):for j in range(raw_roads['features'][i]['geometry']['coordinates'].__len__()):shift_time = int((j / raw_roads['features'][i]['geometry']['coordinates'].__len__())*3600) # 更新当前对应的时间戳raw_roads['features'][i]['geometry']['coordinates'][j] \.extend([0, # 高度设置为0int(start_time) + shift_time])

接着再打印其中一个线要素:

图6

可以发现每个点元素都追加上高度0以及对应的时间戳(注意这里的时间戳必须为整数否则之后输入keplergl会报错),接下来的过程就非常简单。

首先确保你已经安装了keplergl以及对应插件,譬如我所使用的jupyter lab,在确保nodejs被安装的前提下,使用jupyter labextension install @jupyter-widgets/jupyterlab-manager keplergl-jupyter安装拓展插件(jupyter notebook可参考https://github.com/keplergl/kepler.gl/tree/master/bindings/kepler.gl-jupyter#installation),以及使用pip install keplergl来安装keplergl库,一切准备就绪直接运行如下代码:

from keplergl import KeplerGl
# 生成KeplerGl对象s
map1 = KeplerGl(height=400, data={'flow': raw_roads}) # data以图层名为键,对应的矢量数据为值
map1
map1.save_to_html(file_name='渝中区.html') # 导出到本地可编辑html文件

图7

这一步的目的是初始化已嵌入目标数据的html文件,接下来你就可以关闭jupyter lab,在工作目录下找到已经导出的html文件直接打开,接下来的工作将在浏览器里进行。

2.2 交互式创作

接下来的过程则不涉及任何代码,我们将以点击按钮的方式改变我们可视化作品的外观,由于整个过程细节较多,因此将整个过程录制为视频:

Kepler.gl中的交互式参数调整非常简单,只要你随便试一试就可以掌握其用法,不必拘泥于我上面的参数设置,发挥自己的创意,调出更美观的轨迹动画结果。

以上就是本文的全部内容,如有疑问或建议欢迎到评论区与我交流~

-END-


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑AI基础下载(pdf更新到25集)机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/yFQV7am本站qq群1003271085,加入微信群请扫码喜欢文章,点个在看

【Python应用】Python+Kepler.gl轻松制作酷炫路径动画相关推荐

  1. python做动画视频教程_Python+Kepler.gl轻松制作酷炫路径动画的实现示例

    1. 简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集. ...

  2. python炫酷动画源代码_(数据科学学习手札85)Python+Kepler.gl轻松制作酷炫路径动画...

    1 简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集. 图 ...

  3. python制作酷炫动画_Python+Kepler.gl轻松制作酷炫路径动画

    1 简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集.图1 ...

  4. python制作的炫酷动画_Python+Kepler.gl轻松制作酷炫路径动画

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:费弗里 欢迎点击左上角关注小编,除了分享技术文章之外还有很多福利,私 ...

  5. Python制作酷炫的动画效果

    1 引言 利用Python的Matplotlib-Animation库可以制作酷炫的数学公式动画,官方教程可访问链接. 本文为了清晰说明如何利用Animation类来实现动画效果,这里采用介绍一个点沿 ...

  6. python 东哥 with open_向娱乐圈看齐,Python爬取微博评论并制作酷炫的词云!

    2019年伊始,祝愿各位多吃不胖,身体倍儿棒! image 回顾刚刚过去的2018,还有哪些新闻在你心底留有印象? image 怎奈年纪增长,记忆减退,逝去的爆炸新闻也逐渐褪色变得索然无味,毕竟一直以 ...

  7. 可视化案例(五)Kepler.gl绘制动态酷炫热力图

    目录 一.Kepler.gl简介 二.案例演示 2.1 数据介绍 2.2 基本设置 三.Jupyter Notebook中实现 3.1 安装kepler模块 3.2 基本用法 一.Kepler.gl简 ...

  8. 这款免费插件,让Excel轻松制作酷炫图表​

    大家好,我是小五???? 最近我看一篇介绍如何用Excel来制作径向树图[1]的文章,在其中学到了一个很有趣的Excel 加载项. 大家可能都知道D3.js吧,它是目前最流行的可视化库之一.而我要给大 ...

  9. opencv极坐标转换成直角坐标_媲美 PS,用 Python 制作酷炫极坐标全景图

    点击上方"Python数据之道",选择"星标公众号" 收藏文章的同时,不要忘记「在看」 媲美 PS, 用 Python 制作酷炫极坐标全景图 0 概述  今天要 ...

最新文章

  1. 【UWB】数学建模 E 题目个人解题答案 - 2021年第十八届华为杯
  2. LeetCode_树类
  3. InputStream,BufferedImage与byte数组之间的转换
  4. 腾讯 AI Lab 正式开源PocketFlow自动化深度学习模型压缩与加速框架
  5. 即将到来的 ECMAScript 2022 新特性
  6. P3160:局部极小值(容斥、状压)
  7. python快乐数字怎么表达_Python经典面试题:这些面试题你会了吗?
  8. 关于SO引用的过滤:abiFilters
  9. Gitlab+Git实现版本控制系统
  10. python交叉编译环境_交叉编译Python
  11. libevent 编程疑难解答
  12. 正则表达式(三)操作符的运算优先级、全部符号的解释
  13. 【转】C#中Serializable序列化实例详解
  14. 编译原理(龙书):第七章部分题目参考答案
  15. 100m网速测试软件,网速测试哦(100兆宽带wifi最佳设置)
  16. 怎么使用计算机操作鼠标,鼠标操作怎么用?电脑鼠标操作图文教程
  17. 使用小爱同学来控制电脑关机
  18. 加装固态硬盘+安装win10系统
  19. No4.搭建基本的授权码模式请求token(一):实现授权服务端的授权码模式操作
  20. 3DText无法被物体遮挡 - 解决

热门文章

  1. Apache2启动错误以及Ubuntu update的错误
  2. windows下python虚拟环境virtualenv安装和使用
  3. js 继承的几种方式
  4. Java面向对象(二、继承)
  5. IOC容器特性注入第一篇:程序集反射查找
  6. C# 连接Oracle(利用ODP.net,不安装oracle客户端)
  7. 【牢骚】360,你怎么对待别人,别人就怎么对待你。
  8. XNA Billboard(公告板技术)
  9. s3c2410开发环境建立
  10. Matlab 2022a 安装教程(手把手式教程 超简单)