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