来自Geopandas GeoDataFame的Choropleth地图

时间:2015-07-31 22:05:45

标签: python pandas matplotlib geopandas

我正在尝试从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中的多边形补丁。这似乎涉及更多,但似乎提供了更多的自定义选项。如果有必要沿着这条路线建立一个传奇,我可以跟进另一个问题,到目前为止我将包括我的代码。

感谢您的帮助。

2 个答案:

答案 0 :(得分:17)

以下补丁已集成在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)

得到这样的数字:

enter image description here

答案 1 :(得分:0)

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

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