GeoPandas를 사용하여 플롯에서 마커 크기 변경


10

포인트와 관련 데이터가있는 지리 데이터 프레임이 있습니다. geopandas를 사용하여 맵에 플롯하고 점의 크기가 지오 데이터 프레임의 열 중 하나와 일치하도록하고 싶습니다.

지금까지 다음 코드가 있습니다.

base = world.plot(color='white', figsize=(20,10))
geo_df.plot(ax=base, marker='.', color='red', markersize = 
geo_df['Pop_2005'])
plt.xlim([-85, -60])
plt.ylim([-5, 12.5]);

그러나 다음과 같은 오류가 발생합니다. TypeError: cannot convert the series to <class 'float'>

어떤 아이디어?


이것이 모든 코드입니까?
Fezter

@Fezter는 맵을 그리는 모든 코드입니다. 지리 데이터 프레임을 작성하는 데 더 많은 코드가 있지만 여기에는 관련이 없습니다. 여기서 중요한 부분이 없습니까? 감사.
Juan Francisco Saldarriaga

Pop_2005의 필드 타입은 무엇입니까? float 또는 int입니까?
Fezter

3
단일 마커 크기 만 설정할 수 있고 시리즈 / 목록 / 튜플 또는 부동이 아닌 단일 부동 값을 예상하고 있습니까?
derNincompoop

1
Pop_2005플로트 또는 정수로 명시 적으로 캐스팅 할 가치가 있습니까? geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
om_henners

답변:


7

geopandas> = 0.3 (2017 년 9 월 출시)에서 점의 플로팅은 scatter후드 아래의 matplotlib 의 플롯 방법을 기반으로 하며 가변 마커 크기를 허용합니다.

이제 실제로 markersize원래 질문에서 OP가 한 일에 열을 전달할 수 있습니다 .

import geopandas

cities = geopandas.read_file(geopandas.datasets.get_path('naturalearth_cities'))
# adding a column with random values for the size
cities['values'] = np.abs(np.random.randn(len(cities))) * 50

cities.plot(markersize=cities['values'])

제공합니다 :

여기에 이미지 설명을 입력하십시오

물론 마커 크기를 다른 상수 값으로 변경하는 것이 목표라면 키워드에 단일 부동 소수점을 전달할 수 있습니다.

cities.plot(markersize=10)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.