Cambiar el tamaño del marcador en la trama con GeoPandas


10

Tengo un geodataframe con puntos y algunos datos asociados. Quiero trazarlo en un mapa usando geopandas y hacer que el tamaño de los puntos corresponda a una de las columnas del geodataframe.

Hasta ahora tengo el siguiente 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]);

Pero recibo el siguiente error: TypeError: cannot convert the series to <class 'float'>

¿Algunas ideas?


¿Es todo este código?
— Fezter

@Fezter ese es todo el código para dibujar el mapa. Hay más código para construir el geodataframe, pero eso no parecía relevante aquí. ¿Hay algo crucial que falta aquí? Gracias.
— Juan Francisco Saldarriaga

¿Cuál es el tipo de campo de Pop_2005? ¿Es flotante o int?
— Fezter

3
¿Podría ser que solo puede establecer un tamaño de marcador único, y se espera un único valor flotante y no una serie / lista / tupla o flotantes?
— derNincompoop

1
¿Valdría la pena lanzarlo Pop_2005explícitamente a un flotante o entero? geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
— om_henners

Respuestas:


7

En geopandas> = 0.3 (lanzado en septiembre de 2017), el trazado de puntos se basa en el scattermétodo de trazado de matplotlib debajo del capó, y esto acepta un tamaño de marcador variable.

Entonces, ahora puede pasar una columna a markersizelo que hizo el OP en la pregunta 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'])

da:

ingrese la descripción de la imagen aquí

Por supuesto, si su objetivo es simplemente cambiar el tamaño del marcador a un valor constante diferente, aún puede pasar un único flotante a la palabra clave:

cities.plot(markersize=10)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.