编程语言
首页 > 编程语言> > python-用图案而不是颜色Geopandas填充多边形

python-用图案而不是颜色Geopandas填充多边形

作者:互联网

我试图用某种图案而不是颜色填充多边形(因为我必须打印项目B& W).到目前为止,我只设法用灰度填充它们,但如果有任何方法,我想采用模式方法.

我的一段代码如下:

if info['max']=='catarro':
    poly = Polygon(shape, facecolor = "#DDDDDD", alpha = alpha, linewidtt = 0.01)
    plt.gca().add_patch(poly)

该if语句位于for循环内,该循环遍历信息和形状.如果信息的某些事实与字符串匹配,我只需为多边形着色,然后将其作为补丁添加到shapefile上即可.

我也想以某种方式将这种模式添加到图例中.

提前致谢.

解决方法:

最近提交的geopandas允许将剖面线参数传递给GeoDataFrame上的plot方法,因此,如果您是从最新源安装的,并且具有名为gdf的GeoDataFrame,则可以执行以下操作:

gdf.plot(facecolor="#DDDDDD", hatch="//")

然后,您可以根据匹配某个属性来绘制所需的任何子集.从您的示例中,我对您的数据的结构有点不清楚,但是类似:

gdf[gdf["key"] == value1].plot(facecolor="#DDDDDD", hatch="//")
gdf[gdf["key"] == value2].plot(facecolor="#DDDDDD", hatch="o")

等等.

在pip或conda上可用的最新的Geopandas没有此功能.您仍然可以将hatch关键字传递给matplotlib.patches.Polygon(这似乎是您在示例中使用的样式)来控制样式,在上面的示例中,样式是:

 poly = Polygon(shape, facecolor="#DDDDDD", alpha=alpha, linewidth=0.01, hatch="\\")

matplotlib gallery中提供了更完整的绘图舱口演示.

要添加图例,可以保留一系列绘制的多边形和关联的标签,并将其传递给图例.因此,在上面的循环中,类似:

polys.append(poly)
labels.append(search_str)

然后,在循环之外:

ax.legend(polys, labels)

标签:pandas,gis,geopandas,python
来源: https://codeday.me/bug/20191026/1936059.html