颜控+轻便——借助Folium实现动态热力图绘制
发布网友
发布时间:2024-10-04 09:17
我来回答
共1个回答
热心网友
时间:2024-10-04 10:00
一分钟读完本文
Folium是一个基于Python环境开发的地图绘制包,能够绘制美观的HTML格式地图,易于安装和使用。本文将介绍Folium的三个主要功能:绘图、打点、热力图及动态化、风格设置等,并简要说明Folium的不足之处,同时提及如何使用OSMNX下载路网的SHP文件。
写在前面
首次接触到Folium是在一个KAGGLE竞赛的Kernel上,当时便被其能迅速生成美观地图的功能所吸引。近期在处理Seattle项目时,再次深入了解了Folium。Folium建立在Python生态系统的数据处理能力和Leaflet.js库的地图展示能力之上。简单来说,就是在Python环境中处理数据,并通过Folium在Leaflet地图上展示。
1、本文主要参考:英文好的同学请直接点击第一个链接,查看官方提供的demo,了解更丰富的示例。
2、本文主要绘制的是Seattle及其道路流量相关信息。
绘制一张地图
在绘制地图时,Exposure_raw['mid_y']与Exposure_raw['mid_x']分别存储了各点的纬度和经度。location用于指定地图中心点的经纬度。tiles用于指示地图风格。
主要使用的风格有:Stamen Toner(黑白)、默认(OSM)、Stamen Terrain(地形图)。下面展示的是Stamen Toner风格。
如果不是在notebook编辑器中,请使用save将地图保存为html文件,然后用浏览器打开。
加载一些点
将纬度和经度以坐标形式输入到地图上。使用folium.Marker和add_to方法添加点。上图展示了默认的点样式。默认样式也是相当美观的。
如果想改变点的样式,也是可以的,例如加载圆形点:
绘制一张热力图
在绘制热力图时,需要注意以下几点:
绘制结果:
让热力图动起来
由于没有面板数据,我在此对数据进行了一个随机抖动,按照一天24小时的维度进行数据再造,并对再造的数据进行动态绘制。
重点在于对输入数据的数据类型进行控制。输入HeatMapWithTime中的data_move是一个多层列表:[[[Y1,X1,W1],...,[Y1,X1,W1]],[[Y1,X1,W1],...,[Y1,X1,W1]],...,[[Y1,X1,W1],...,[Y1,X1,W1]]]。需要按照规范进行构造。
最终输入如下:可见多了一个时间控制窗口,还可以进行交互控制,功能相当强大。
缺点:不能加载太多点
folium更多的是轻便的处理与展示。如果你想要在地图上添加过多的点,可能会出现地图加载缓慢或网页无法打开的情况。这时,你可以考虑将地图下载到离线环境,使用ARCGIS进行处理。
利用osmnx可以轻松下载各地的shapefile文件。network_type='all_private'表示下载所有路网。下载完成后,即可在ARCGIS中打开: