python:folium库实现地图可视化
程序员文章站
2024-02-13 17:49:10
...
python:folium库实现地图可视化
folium库是一个python地图可视化的库,可以实现一下复杂的功能
安装库
首先看一下是否安装了这个库
import folium
没有的话可以用conda安装
conda install folium -c conda-forge
没有Anaconda的话可以使用pip
pip install folium
简单使用
通过下面的代码,我们可以看到我们想要的经纬度的地图,作者在这里写了四个tiles,通过修改tiles可以修改使用不同的地图,通过修改location可以修改不同的中心点经纬度。
import folium
import webbrowser
## 初始化地图
m = folium.Map(
location= [31.2389, 121.4992],
zoom_start=12,
# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
# tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
attr='default'
)
m.save('f1.html')
webbrowser.open('f1.html')
通过添加几行代码,我们可以添加一个点到地图上,第一个列表是经纬度,popup是这个点弹出的信息,color决定的标记的这个点的颜色,icon可以选择点上的不同信息
import folium
import webbrowser
## 初始化地图
m = folium.Map(
location= [31.2389, 121.4992],
zoom_start=12,
# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
# tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
attr='default'
)
# 添加marker到地图
folium.Marker([31.2453,121.4857], popup='123', tooltip='tooltip',icon=folium.Icon(color='red')).add_to(m)
folium.Marker([31.2418,121.4953], popup='456', tooltip='tooltip',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)
m.save('f1.html')
webbrowser.open('f1.html')
通过另外的几行代码,我们可以画一个圆到地图上
import folium
import webbrowser
## 初始化地图,指定上海市
m = folium.Map(
location= [31.2389, 121.4992],
zoom_start=12,
# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
# tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
attr='default'
)
# 添加marker到地图
folium.Marker([31.2453,121.4857], popup='123', tooltip='tooltip',icon=folium.Icon(color='red')).add_to(m)
folium.Marker([31.2418,121.4953], popup='456', tooltip='tooltip',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)
#标记一个空心的圈
folium.Circle(
location=[31.2453,121.4857], #圆圈中心的经纬度
radius=10000, # 圆的半径 单位为米(m)
color='crimson', #圈的颜色
popup='popup',
fill=False #是否填充
).add_to(m)
#标记一个实心圆
folium.CircleMarker(
location=[31.2453,121.4857],
radius=100,
popup='popup',
color='#DC143C', #圈的颜色
fill=True, #是否填充
fill_color='#6495ED' #填充颜色
).add_to(m)
m.save('f1.html')
webbrowser.open('f1.html')
高级操作
通过folium我们还可以绘制热力图
import folium
import webbrowser
## 初始化地图,指定上海市
m = folium.Map(
location= [48.269596,-122.200035],
zoom_start=12,
# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
# tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
attr='default'
)
'''
绘制热力图
'''
Loc_hot = Loc_hot = [
[48.269596,-122.200035],
[48.269596,-122.200035],
[48.269596,-122.180035],
[48.339596,-122.260035],
[48.339596,-122.220035],
[48.409596,-122.300035]
]
folium.plugins.HeatMap(Loc_hot).add_to(m)
m.save('f1.html')
webbrowser.open('f1.html')