Python生成城市热力图

前言

	这是一个利用folium包将GDP.xls文件内的信息加工成热力图的示例过程

1.导入数据

导入必要的包以及将GDP数据读入,其中numpy和pandas都是处理数据时常用的包

folium是地图包,提供绘制热力图以及链接到地图上的函数
GDP文件中有我们需要的城市名、城市经纬度和城市GDP和人数

import numpy as np
import pandas as pd
import folium #地图信息
from folium.plugins import HeatMap
import webbrowser #用于生成网页显示
data = pd.read_excel(r"GDP.xls") #使用 pandas 库读入待处理的 Excel 文件

2.提取数据

将data中我们需要的数据提取出来,在这个例子里我们一共处理100个城市的平均GDP,由于在文件中只有人数和城市总GDP,我们需要将其转化为人均GDP

cityNum = 100 # 共分析100座城市
lat = np.array(data["LAT"][0:cityNum]) # 获取纬度值
lon = np.array(data["LON"][0:cityNum]) # 获取经度值
pop = np.array(data["POP"][0:cityNum], dtype=float) # 获取人口数,转化为浮点型
gdp = np.array(data["GDP"][0:cityNum], dtype=float) # 获取 GDP,转化为浮点型
gdpAverage = np.array(data["GDP_Average"][0:cityNum],dtype=float) # 获取人均 GDP,转化为浮点型

3.生成热力图且保存

第一行将一个城市的经纬度和平均GDP制成一个列表,这个平均GDP就是我们在制作热力图时的权重

folium.Map函数将一张地图导入进来,location为地图中心位置,zoom_start为缩放比,这个数值越大,放大程度越高

HeatMap(data).add_to(mapData)这行代码将我们的热力图添加到了地图中

最后保存我们的热力图html文件,到时候打开就可以了

# 将数据制作成[纬度, 经度, 权重]的形式
data = [[lat[i], lon[i], gdpAverage[i]] for i in range(cityNum)] 
# 生成地图数据,初始缩放程度为6倍
mapData = folium.Map(location=[35, 110], zoom_start=6)   
# 将热力图添加到地图里
HeatMap(data).add_to(mapData)  
# 将结果保存为 html(网页)文件
filePath = r"GDP_HeatMap.html"
mapData.save(filePath) 

4.打开html文件

# 使用默认浏览器打开网页
webbrowser.open(filePath)  

结果展示

在这里插入图片描述

资源下载:

资源下载:热力图原始资源

  • 7
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值