【问题标题】:Fill polygon with pattern instead of color Geopandas用图案而不是颜色填充多边形 Geopandas
【发布时间】:2017-05-20 05:22:12
【问题描述】:

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

我的一段代码如下:

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

这个 if 语句位于一个 for 循环中,该循环遍历 info 和 shape。如果某些信息事实与字符串匹配,我只需为多边形着色并将其作为补丁添加到 shapefile 上。

我还想以某种方式将此模式添加到图例中。

提前致谢。

【问题讨论】:

    标签: python pandas gis geopandas


    【解决方案1】:

    最近对geopandas 的提交允许将hatch 参数传递给GeoDataFrame 上的plot 方法,因此如果您从最新源安装,并且您有一个名为gdfGeoDataFrame,您可以做到:

    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 中提供了更完整的绘制阴影的演示。

    要添加图例,您可以保留绘制的多边形列表和相关标签,并将它们传递给legend。因此,在上面的循环中,类似于:

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

    然后,在你的循环之外:

    ax.legend(polys, labels)
    

    【讨论】:

      猜你喜欢
      • 2020-07-26
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多