Alterar o tamanho do marcador na plotagem com GeoPandas


10

Eu tenho um geodataframe com pontos e alguns dados associados. Quero plotá-lo em um mapa usando geopandas e ter o tamanho dos pontos correspondentes a uma das colunas no geodataframe.

Até agora, tenho o seguinte código:

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

Mas estou recebendo o seguinte erro: TypeError: cannot convert the series to <class 'float'>

Alguma ideia?


Esse é todo o código?
Fezter

@ Fezter é todo o código para desenhar o mapa. Há mais código para a construção do geodataframe, mas isso não parece relevante aqui. Há algo crucial faltando aqui? Obrigado.
Juan Francisco Saldarriaga

Qual é o tipo de campo do Pop_2005? É float ou int?
Fezter

3
Será que você só pode definir um tamanho de marcador único e espera um único valor flutuante e não uma série / lista / tupla ou flutuadores?
DerNincompoop 10/07

11
Valeria a pena lançar Pop_2005explicitamente para um número flutuante ou inteiro? geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
Om_henners

Respostas:


7

Em geopandas> = 0,3 (lançado em setembro de 2017), a plotagem de pontos é baseada no scattermétodo de plotagem do matplotlib sob o capô, e isso aceita um tamanho de marcador variável.

Então agora você pode realmente passar uma coluna para o markersizeque o OP fez na pergunta original:

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

dá:

insira a descrição da imagem aqui

Obviamente, se seu objetivo é simplesmente alterar o tamanho do marcador para um valor constante diferente, você ainda pode passar um único float para a palavra-chave:

cities.plot(markersize=10)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.