地图可视化组件–folium简单介绍

地图可视化组件–folium简单介绍

folium是基于Python环境开发的一个地图绘制包,可以在程序中引入从而绘制精美的地图数据可视化图表。folium建立在Python生态系统的数据处理能力和Leaflet.js库的映射能力之上。 用Python处理数据,然后通过folium在可视化的Leaflet地图中将其可视化。

安装(install)

# 安装命令
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对象展现出来

  • 在Map对象的生成形式之上,可以在定义所有的图层内容之后呢,把它保存为html文件在浏览器中独立显示
  • 也可以基于jupyter notebook在一个ipynb文件内部嵌入对应的交互地图

创建/绘制一个地图

# 导入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

folium.Map()参数的简单介绍

在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())

你可能感兴趣的:(地图可视化组件–folium简单介绍)