地理信息数据框架Geopandas生成的Choropleth地图

7
我正在尝试使用Geopandas GeoDataFrame中的多边形制作一个区域填充地图。我想根据GeoDataFrame列中某个数值的分位数对多边形进行符号化。我正尝试找出不同的选项,看哪个最适合我的需求。如有任何建议,将不胜感激。
看起来,Geopandas已经有了一些实现这个功能的能力:http://nbviewer.ipython.org/github/geopandas/geopandas/blob/master/examples/choropleths.ipynb
tracts.plot(column='CRIME', scheme='QUANTILES', k=3, colormap='OrRd')

这个方法可行,但我找不到太多的文档。我想添加一个图例来显示分位数截断值,但似乎Geopandas绘图目前只允许基于分类数据构建图例。是否有任何解决办法?
此外,我想调整多边形轮廓线宽度。这可能吗?
作为替代选项,我一直在尝试使用matplotlib中的多边形补丁。这看起来要复杂得多,但似乎提供了更多自定义选项。如果需要按此路线构建图例,我可以跟进另一个问题,并包含我迄今为止的代码。
感谢您的帮助。

@joris 是的,我看到了。我已经用它来添加标题,删除轴标签等。但是,我不太熟悉matplotlib,也不确定如何添加图例或更改多边形轮廓的厚度。谢谢。 - AJG519
要添加彩条作为图例,您需要使用色图。我正在查看源代码,发现这个色图似乎只能从plot_dataframe函数内部访问。因此,也许暂时为了满足您的需求,对plot_dataframe进行一些修补可能更容易些。 - joris
@joris,感谢您的回复。为了澄清,您建议我编辑plot_dataframe函数的代码(在此处找到:https://github.com/geopandas/geopandas/blob/master/geopandas/plotting.py),以添加色条图例,并获得调整多边形轮廓宽度的功能? - AJG519
@joris,非常感兴趣。谢谢你的帮助。 - AJG519
是的,这正是我所想的。看起来很棒,谢谢你的帮助! - AJG519
显示剩余3条评论
2个回答

20

下面的补丁已经集成在geopandas中,所以现在你只需要执行以下操作:

tracts.plot(column='CRIME', scheme='QUANTILES', k=3, colormap='OrRd', legend=True)
我对geopandas的plot_dataframe函数进行了小修改,以使其在使用PySAL方案时启用图例。您可以在这里找到它: http://nbviewer.ipython.org/gist/jorisvandenbossche/d4e6efedfa1e4e91ab65 (调整仅在if scheme is not None:之后的几行中)。这样,您就可以执行以下操作:
ax = plot_dataframe(tracts, column='CRIME', scheme='QUANTILES', k=3, colormap='OrRd', legend=True)

要获得这样的数字:

输入图像描述


这太棒了-真是一个巨大的改进。有没有讨论过将基于这段代码的东西直接加入到Geopandas中? - Owen
1
是的,这已经在 geopandas 中合并了:https://github.com/geopandas/geopandas/pull/210(我会更新我的回答) - joris

0

要调整多边形轮廓线的宽度,您可以使用"linewidth",如下所示:

tracts.plot(column='CRIME', scheme='QUANTILES', k=3, colormap='OrRd', linewidth=0.1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接