4

色ではなくパターンでポリゴンを塗りつぶそうとしています(プロジェクトを白黒で印刷する必要があるため)。これまでのところ、それらをグレースケールで埋めることしかできませんでしたが、そうする方法があればパターンアプローチを取りたいと思います。

私のコードの一部は次のとおりです。

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

この if ステートメントは、info と shape を実行する for ループ内にあります。情報が文字列と一致する場合は、ポリゴンに色を付けて、シェープファイルにパッチとして追加します。

また、何らかの方法でこのパターンを凡例に追加したいと考えています。

前もって感謝します。

4

1 に答える 1

7

geopandasへの最近のコミットでは、GeoDataFramehatchのメソッドに引数を渡すことができるためplot、最新のソースからインストールし、GeoDataFrame名前付きの があるgdf場合は、次のことができます。

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 ギャラリーで利用できます。

凡例を追加するには、プロットされたポリゴンと関連するラベルのリストを保持し、それらを に渡しlegendます。したがって、上記のループ内では、次のようになります。

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

そして、あなたのループの外側:

ax.legend(polys, labels)
于 2017-01-05T17:50:36.817 に答える