Zmień rozmiar znacznika na wykresie za pomocą GeoPandas


10

Mam geodataframe z punktami i niektórymi powiązanymi danymi. Chcę wykreślić go na mapie przy użyciu geopand i mieć rozmiar punktów odpowiadający jednej z kolumn w ramce geodata.

Do tej pory mam następujący kod:

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]);

Ale pojawia się następujący błąd: TypeError: cannot convert the series to <class 'float'>

Jakieś pomysły?


Czy to cały kod?
— Fezter

@ Fezter, to wszystko kod do rysowania mapy. Jest więcej kodu do budowania geodataframe, ale tutaj nie wydawało się to istotne. Czy brakuje tu czegoś kluczowego? Dzięki.
— Juan Francisco Saldarriaga

Jaki jest typ pola Pop_2005? Czy to float czy int?
— Fezter

3
Czy to możliwe, że możesz ustawić tylko jeden rozmiar znacznika i oczekuje on wartości pojedynczej liczby zmiennoprzecinkowej, a nie serii / listy / krotki lub liczb zmiennoprzecinkowych?
— derNincompoop,

1
Czy warto rzucić Pop_2005wprost na liczbę zmiennoprzecinkową lub całkowitą? geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
— om_henners

Odpowiedzi:


7

W geopandach> = 0,3 (wydany we wrześniu 2017 r.), scatterWykreślanie punktów opiera się na metodzie matplotlib pod maską, a to przyjmuje zmienną wielkość markera.

Teraz możesz przekazać kolumnę do markersizetego, co OP zrobił w pierwotnym pytaniu:

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'])

daje:

wprowadź opis zdjęcia tutaj

Oczywiście, jeśli Twoim celem jest po prostu zmiana rozmiaru znacznika na inną stałą wartość, nadal możesz przekazać pojedynczy parametr zmiennoprzecinkowy do słowa kluczowego:

cities.plot(markersize=10)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.