folium模塊展示熱力圖
folium是Python中一個繪製地圖的模塊,並可以在地圖(底圖)上打點,畫圈,做顏色標記的工具類。簡單易學,和pandas可以很好的融合,是地圖可視化的一款神器。
在命令行中直接在線安裝即可,快速、簡潔、方便、高效。
pip install folium
這個開源庫中有許多來自OpenStreetMap、MapQuest Open、MapQuestOpen Aerial、Mapbox和Stamen的內建地圖組件,而且支持使用Mapbox或Cloudmade的API密鑰來定製個性化的地圖組件。Folium支持GeoJSON和TopoJSON兩種文件格式的疊加,也可以將數據連接到這兩種文件格式的疊加層,最後可使用color-brewer配色方案創建分佈圖。
本節先來展示一下它的簡單應用,主要以2018年1月全國1000多個PM2.5地面觀測站點為例,將這些數據以熱力圖(heat map)的形式展現給大家,並生成相應的html文件。
代碼實現:
# _*_ coding: utf-8 _*_
__author__ = 'xbr'
__date__ = '2019/1/9 15:47'
import numpy as np
import pandas as pd
import folium
import webbrowser
from folium.plugins import HeatMap
# 讀取csv文件,以Dataframe形式保存
df = pd.read_csv(r"D:\data\PM25-20180101.csv")
# 獲取數據個數
num = df.shape[0]
# 獲取緯度
lat = np.array(df["lat"][0:num])
# 獲取經度
lon = np.array(df["lon"][0:num])
# 獲取PM2.5,轉化為numpy浮點型
pm25 = np.array(df["PM25"][0:num], dtype=float)
# 將數據製作成[lats, lons, weights]的形式
data1 = [[lat[i], lon[i], pm25[i]] for i in range(num)]
# 繪製Map,中心經緯度[32, 120],開始縮放程度是5倍
map_osm = folium.Map(location=[32, 120], zoom_start=5)
# 將熱力圖添加到前面建立的map里
HeatMap(data1).add_to(map_osm)
file_path = r"D:\AirQualityMap.html"
# 保存為html文件
map_osm.save(file_path)
# 默認瀏覽器打開
webbrowser.open(file_path)