python - 用 geopandas 绘制热图(kdeplot)
问题描述
我将以下数据存储在一个geopandas.DataFrame
对象中。geometry
是多边形,x
是我想用作热标度的值。
id geometry x
9 01001 POLYGON ((-102.10641 22.06035, -102.10368 22.0... 33
19 01002 POLYGON ((-102.05189 22.29144, -102.05121 22.2... 2
29 01003 POLYGON ((-102.68569 22.09963, -102.69087 22.0... 0
39 01004 POLYGON ((-102.28787 22.41649, -102.28753 22.4... 0
49 01005 POLYGON ((-102.33568 22.05067, -102.33348 22.0... 22
我可以使用以下代码绘制地图并根据 column 中的值为每个多边形着色x
。
t.plot(column='x', cmap='coolwarm', legend=False)
plt.axis('off')
plt.show()
这还不错,但考虑到我在单个对象中有多边形和值,我想知道是否有一种方法可以使用geopandas
.
解决方案
我被推荐使用geoplot
.
geoplot.kdeplot
期望geopandas.DataFrame
每个点有一行的对象。也就是说,类似于以下内容:
PointID geometry
0 204403876 POINT (-101.66700 21.11670)
1 204462769 POINT (-101.66700 21.11670)
2 144407530 POINT (-101.66700 21.11670)
3 118631118 POINT (-101.66700 21.11670)
4 118646035 POINT (-101.66700 21.11670)
然后将这些点绘制在地图上,作为单独的对象传递。
为了在代码中显示这一点,假设多边形存储在 中df_map
,点存储在df_points
.
# Import geoplot
import geoplot
import geoplot.crs as gcrs
# Plot heatmap
ax = geoplot.kdeplot(df_points, projection=gcrs.AlbersEqualArea())
# Add polygons
geoplot.polyplot(df_map, ax=ax)
这应该会产生类似的东西。
可悲的是,我无法发布我的结果,因为projection=gcrs.AlbersEqualArea()
我的会话崩溃了,但我希望这对将来的某人有所帮助。
推荐阅读
- azure - Cosmos 插入不会有效地并行化
- macos - macOS 命令行工具和 gcc 在 Catalina 上突然失败(在 Mojave 上工作)
- unity3d - 使用 Vector3 使 Unity3D 中的代码更短,并在 1 轴上浮动值
- python - 在 Pyspark 中使用 udf 时出现 __getnewargs__ 错误
- apache-spark - 将pyspark数据框写入文件保留嵌套引号,而不是“外部”引号?
- python - 使用 tkinter 按钮更新变量
- reactjs - 如何隐藏当前登录用户在firestore数据库中单击/查看的文档?
- python - python将数据框值解析为变量值
- javascript - 使用 Vue.js 动画恒定(未知)数据流的最佳方法?
- mongodb - 如何在 mongodb 中进行条件嵌套查找搜索