folium是基于Python环境开发的一个地图绘制包,可以在程序中引入从而绘制精美的地图数据可视化图表。folium建立在Python生态系统的数据处理能力和Leaflet.js库的映射能力之上。 用Python处理数据,然后通过folium在可视化的Leaflet地图中将其可视化。
# 安装命令
pip install folium
可以直接使用pip进行安装,安装包的体积不大,但是如果安装速度很慢,可以通过使用清华镜像来高速安装。命令如下:
# 临时配置为清华源,输入以下命令就可以享受高速的安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple folium
# 这里提一下,要安装别的package,只需要修改最后的package名就可以了
当然你也可以一劳永逸,将清华源设置为默认的安装源,命令如下:与本文安装过程无关,仅仅作为分享
# 通过此命令,你以后使用pip进行安装,默认的安装源就是清华镜像的地址
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 配置好之后,假设要安装名字为AIHUBEI的package则命令如下
pip install AIHUBEI
folium语法格式类似ggplot2,通过不断添加图层元素来定义一个Map对象,最后以如下方式将Map对象展现出来
# 导入package
import folium
import os
# 创建新的Map Object
# 指定经纬度,指定初始地图的缩放尺寸
# 这里绘制十堰市的地图:【湖北十堰经纬度】 经度:110.79 , 纬度:32.65
x = folium.Map(location=[32.65,110.79],zoom_start=15)
# 这里创建的x是一个对象,其类型可以通过如下方式查看
print(type(x))
# 或者使用下述命令,二选一啊
print(x.__class__)
m的类型为“folium.folium.Map”,也就是Map类型,这个和常用的绘图格式ggplot类似。在jupyter种使用matplotlib绘图时,最后可以通过调用show()来显示图像。这里可以直接进行输出:
# 显示出x,在jupyter种,直接进行输出显示
x
在jupyter种,可以直接通过使用shift+Tab,来进行参数的查看。以下简要列出一些:
# 可以看到,参数具体如下:
folium.Map(
location=None,
width='100%',
height='100%',
left='0%',
top='0%',
position='relative',
tiles='OpenStreetMap',
attr=None,
min_zoom=0,
max_zoom=18,
zoom_start=10,
min_lat=-90,
max_lat=90,
min_lon=-180,
max_lon=180,
max_bounds=False,
crs='EPSG3857',
control_scale=False,
prefer_canvas=False,
no_touch=False,
disable_3d=False,
png_enabled=False,
zoom_control=True,
**kwargs,
)
简要参数描述
----------
location: 元组 or 列表, 默认为None,表示维度和经度。不要输入反了
width: 整型值(像素) or 百分比 (默认值: '100%'),表地图的宽度
height: 整型值(像素) or 百分比 (默认值: '100%'),表地图的宽度
tiles: str类型, 默认为 'OpenStreetMap' 映射图块集使用。可以从内置磁贴列表中进行选择,传递自定义网址或传递“无”以创建没有图块的地图。对于更高级的图块图层选项,使用`TileLayer`类。
min_zoom: 整型, 默认为0,表示所创建的额地图可缩放的最小程度。
max_zoom: 整型, 默认为0,表示所创建的额地图可缩放的最小程度。
zoom_start: 整型,默认为10,初始化地图缩放级别。
control_scale : bool类型, 默认为False,表:是否在地图上创建比例尺
# 创建新的Map对象,设置宽度为50%,同时添加上比例尺
x = folium.Map(location=[32.65,110.79],
zoom_start = 15,
control_scale = True,
width = '50%')
# 显示
x
# 默认地图为街景显示,进行更改,变成灰度显示,有点像刺激战场的地图了。
x = folium.Map(location=[32.65,110.79],
zoom_start = 15,
control_scale = True,
width = '50%',
tiles='stamen Terrain')
# 显示
x
为地图加上标记部件
# 添加标记,通过Marker方法
folium.Marker([32.65,110.79],
popup='Portland, OR').add_to(x)
# 也可以写成,
folium.Marker([32.65,110.79],
popup=Popup('Portland, OR')).add_to(x)
为地图加上标记部件,同时设置标记的颜色
# 通过使用icon参数实现标记的渲染
folium.Marker([32.65,110.79],
popup='Portland, OR',icon=folium.Icon(color='green')).add_to(x)
为地图加上其他类型的标记,同时使用颜色填充
# 添加一个圆圈标记,进行默认颜色的填充
folium.Circle(
radius=100,
location=[32.65,110.79],
popup='The Waterfront',
color='crimson',
fill=True,
fill_color='某一颜色' # 可以为js里的颜色代号
).add_to(x)
在地图上添加任意形状的集合图形,当然涉及到不同位置的坐标
# 也就是在地图上将这几个地点连接起来
ls = folium.PolyLine(locations=[[32.65,110.79],
[30.02,112.14],
[31.25,113.69],
[29.83,115.22]],
color='yellow')
ls.add_to(x)
为地图添加鼠标监听事件,显示鼠标当前位置的经纬度
x = folium.Map(
location=[32.65,110.79],
zoom_start=15
)
# 为地图对象添加点击显示经纬度的子功能
x.add_child(folium.LatLngPopup())