2017-01-05 7 views
2

프로젝트 대신 B & W를 인쇄해야하기 때문에 색상 대신 다각형을 채우려고합니다. 지금까지 나는 그것들을 그레이 스케일로 채울 수 밖에 없었지만 그렇게 할 수있는 방법이 있다면 패턴 접근 방식을 취하고 싶습니다. 문 정보와 형태를 통해 실행 루프에 대한 내부 인 경우색 대신에 다각형을 채우십시오. Geopandas

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

이 :

내 코드의 조각은 다음과 같다. 정보의 일부 사실이 문자열과 일치하는 경우 폴리 색으로 색칠하고 shapefile 위에 패치로 추가합니다.

또한이 패턴을 범례에 몇 가지 방식으로 추가하고 싶습니다.

미리 감사드립니다. 당신이 할 수있는, 최신 소스에서 설치 한 경우, 그래서 최근이 geopandas 저지

답변

2

는 GeoDataFrame에 plot 방법에 hatch 인수를 전달하는 수 있으며, 당신은 GeoDataFramegdf 이름이 :

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에는이 기능이 없습니다.

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

플로팅 해치의 풀러 데모입니다 : 당신은 아직도 당신의 예에 불과 것이다 위의 스타일을 제어하기 위해 (당신이 당신의 예에서 사용하고있는 것 같다) matplotlib.patches.Polygonhatch 키워드를 전달할 수 있습니다 matplotlib gallery에서 사용할 수 있습니다.

범례를 추가하려면 표시된 폴리곤 목록과 연관된 레이블을 유지하고 이들을 legend으로 전달할 수 있습니다. 위의 루프 안에 그래서, 뭔가 같은 : 루프 외부 다음

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

그리고, :

ax.legend(polys, labels) 
+0

대단히 감사합니다! –