我将以下数据存储在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
我可以使用以下代码来绘制地图并根据列中的值为每个多边形着色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()
使我的会话崩溃,但我希望这对将来的人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)