如何使用GeoPandas基于confidence等指定属性绘制加权热力图
加权热力图绘制修正方案
问题根因
geoplot的kdeplot方法的weight参数设计为仅接收GeoDataFrame中对应属性列的列名字符串,直接传入points.confidence这个Series对象会被参数校验逻辑忽略,最终默认按纯地理点密度计算KDE结果。
修正代码
仅需要修改kdeplot调用的weight参数即可,修改后完整代码如下:
import geoplot as gplt import geopandas as gpd import geoplot.crs as gcrs import matplotlib.pyplot as plt points = gpd.read_file('points.geojson') polygons = gpd.read_file('polygons.geojson') ax = gplt.polyplot(polygons, projection=gcrs.AlbersEqualArea(), zorder=1) # weight参数传入属性列名的字符串即可生效 gplt.kdeplot(points, cmap='Reds', shade=True, clip=polygons, ax=ax, weight='confidence') plt.show()
备用兼容方案
如果你使用的geoplot版本极低,仍然无法识别weight参数,可以手动计算加权KDE再可视化:
- 提取所有点的经纬度坐标和confidence权重
- 调用
scipy.stats.gaussian_kde传入weights参数计算加权核密度 - 基于边界范围生成网格,将密度值映射到网格后用
plt.contourf绘制即可
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

