作者:俊欣
来源:关于数据分析与可视化
今天小编来为大家介绍一个叫做Folium的模块,我们可以用它来绘制高清的交互式地图,并且标注出重要的地理位置等等,读者在看过本篇文章之后,读者大致会掌握
1. 使用Folium来进行交互式地图的绘制
2. 在地图上标注出重要的建筑物
pip install folium
我们先来绘制一张简单的地图,以上海为例,上海的经纬度(31.2304, 121.4737)为例,并且我们可以自行设置缩放级别,代码如下
shanghai = folium.Map(location=[31.2304, 121.4737], tiles='openstreetmap', zoom_start=12) # 缩放等级
出来的结果如下图所示,为了更加清晰的区域,我们可以简单地增加缩放级别,通过点击“+”或者“-”号在图的周围增加或者减少缩放,当然我们也可以双击地图进一步放大
当然我们也可以保存成html的格式
shanghai.save('test.html')
当然我们也可以设置地图的纹理样式,上述中的代码,地图的纹理样式默认的是“OpenStreetMap”,在这基础之上,我们也可以将其他几种纹理样式给添加上去,如“Stamen Terrain”样式、“Stamen Toner”样式以及“Mapbox Bright”样式等等,代码如下
shanghai = folium.Map(location=[31.2304, 121.4737], tiles='openstreetmap', zoom_start=12)folium.raster_layers.TileLayer('Open Street Map').add_to(shanghai)folium.raster_layers.TileLayer('Stamen Terrain').add_to(shanghai)folium.raster_layers.TileLayer('Stamen Toner').add_to(shanghai)folium.raster_layers.TileLayer('Stamen Watercolor').add_to(shanghai)folium.LayerControl().add_to(shanghai)
出来的结果如下图所示,大家可以根据自己的审美酌情选择
我们同时也可以在地图上做标记,比如标出一些标志性建筑等等,例如上海的话,就像是我们所熟知的“东方明珠塔”、“上海博物馆”等地,我们根据这些标志性建筑的经纬度来打上标记,代码如下
shanghai = folium.Map(location=[31.2304, 121.4737], tiles='openstreetmap', zoom_start=12)folium.Marker([31.2397, 121.4998], popup = '<i>东方明珠塔</i>', icon=folium.Icon(icon='cloud'),).add_to(shanghai)folium.Marker([31.2343, 121.5079], popup = '<i>上海环球金融中心</i>', icon=folium.Icon(color='red', icon='info-sign'),).add_to(shanghai)folium.Marker([31.1922, 121.3343], popup = '<i>上海虹桥机场</i>', icon=folium.Icon(color='green'),).add_to(shanghai)folium.Marker([31.2283, 121.4755], popup = '<i>上海博物馆</i>', icon=folium.Icon(color='purple'),).add_to(shanghai)shanghai
出来的结果如下图所示
当然我们还可以在地图上画圈圈,例如圈出上海市中心相对繁华的地方,
shanghai = folium.Map(location=[31.2304, 121.4737], tiles='openstreetmap', zoom_start=12)folium.Circle(location = [31.2297, 121.4762], radius = 900, color = 'purple').add_to(shanghai)shanghai
我们也可以把圈出来的区域填充上颜色,
shanghai = folium.Map(location=[31.2304, 121.4737], tiles='openstreetmap', zoom_start=12)folium.Circle(location = [31.2297, 121.4762], radius = 900, color = 'purple', fill = True, fill_color = 'yellow').add_to(shanghai)shanghai
联系客服