微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐