相关文章推荐
机灵的水龙头  ·  变异系数_百度百科·  1 年前    · 
魁梧的硬币  ·  c++ 时间格式化-掘金·  1 年前    · 
爱看书的乌冬面  ·  通过 Performance ...·  1 年前    · 
folium库的使用

folium库的使用

1、库介绍

folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,folium使在交互式传单地图上可视化在 Python 中处理的数据变得容易。

pip install folium      
import folium            # 库引用

2、制图函数

class folium.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:地图中心位置经纬度 [纬度,经度]
  • zoom_start :缩放值,默认为 10,值越大比例尺越小,地图放大级别越大
  • titles : 地图样式,默认'OpenStreetMap',此外还包括: "Stamen Toner"、“ Stamen Terrain”。

简单使用:

China_map = folium.Map(
location = [33,113],                  # location 经纬度 [纬度,经度]
zoom_start =7,                         # 初始地图大小
tiles ='OpenStreetMap' )
China.save('chart.html')              # 保存为HTML
OpenStreetMap
Stamen Toner
Stamen Terrain

3、添加标记

class folium.map.Marker(
location,         # 经纬度
popup=None,       # marker 的名字
tooltip=None,     # 弹出提示
icon=None,        #标记样式
draggable=False, **kwargs)

3.1 添加普通标记

China_map = folium.Map(
    location = [33,113],                  # location 经纬度 [纬度,经度]
    zoom_start =7,                         # 初始地图大小
    tiles ="Stamen Toner"
folium.Marker(
    location=[34.7, 112.4],
    popup='LUO YANG\n[34.7, 112.4]',
    icon=folium.Icon(icon='cloud')
).add_to(China_map)
folium.Marker(
    location=[34.76, 113.65],
    popup='ZHEGN ZHOU\n[34.76, 113.65]',
    icon=folium.Icon(color='green')
).add_to(China_map)
China_map.add_child(folium.LatLngPopup())       # 启用纬度/经度弹出窗口,点击地图可查询经纬度
China.save('chart.html')              # 保存为HTML

3.2 添加自身标记

China_map = folium.Map(
    location = [33,113],                  # location 经纬度 [纬度,经度]
    zoom_start =7,                         # 初始地图大小
    tiles ="Stamen Terrain"
China_map.add_child(folium.LatLngPopup())       # 启用纬度/经度弹出窗口,点击地图可查询经纬度
China_map.add_child(folium.ClickForMarker(popup="marker"))   # 设置自动标记,点击地图即可自动标记
China_map.save('chart.html')              # 保存为HTML

3.3 添加区域 folium.Circle、folium.CircleMarker

class folium.Circle( 
    radius,    # 区域大小
    location,
    popup=None,
    color="crimson",
    fill=False,
class folium.CircleMarker( 
    location,           
    radius,              # 区域大小
    popup,               # 内容
    color,               # 线条颜色
    fill=True,           # 区域内是否填充
    fill_color,          # 区域内颜色
)

两个区别在于,CircleMarker会随着地图缩放扩大而改变,

China_map = folium.Map(
    location = [33,113],                  # location 经纬度 [纬度,经度]
    zoom_start =7,                         # 初始地图大小
    tiles ="Stamen Terrain"
folium.Circle( 
    radius=1000,    # 区域大小
    location=[33.75,113.46],
    popup="circle",
    color="#ff9900",    # 橙色圆环
    fill=False,
).add_to(China_map)
folium.CircleMarker( 
    radius=50,    # 区域大小
    location=[34.75,114.46],
    popup="circle",
    color="#93c47d",
    fill=True,
    fill_color="#93c47d",          # 区域内颜色
).add_to(China_map)
China_map.save('chart.html')              # 保存为HTML

4、根据省份填充颜色

folium可以根据json文件,分辨不同的经纬度,从而进行上色,中国区域内经纬度可以从gitee上获取

最终获取河南省的经纬情况(.choropleth)

China_map = folium.Map(
    location = [33,113],                  # location 经纬度 [纬度,经度]
    zoom_start =7,                         # 初始地图大小
    tiles ="Stamen Toner"
China_map.choropleth(
    geo_data = open('china.json',encoding = 'utf-8').read(),    
    fill_color='#FFD700'
)                        # china.json 是存放河南省经纬情况的文件  ,file_color 填充颜色


5、根据河南地区降水量制作热力图

5.1 获取河南全境内的经纬度以及降水量,并存放在rain.xlsx 文件内

5.2 读取文件,将经纬度和降水量变为list

5.3 使用HeatMap制作热力图

import folium
import pandas as pd
from folium.plugins import HeatMap
import numpy as np
data = pd.read_excel('rain.xlsx')   # 读取文件内容