Зміна розміру маркера в сюжеті за допомогою GeoPandas


10

У мене геодефрагма з точками та деякими пов’язаними даними. Я хочу побудувати його на карті за допомогою геопанд і мати розмір точок, що відповідають одному з стовпців геодефрагменти.

Поки що у мене є такий код:

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 - це весь код для малювання карти. Існує більше коду для побудови геодефрагменти, але це не видається актуальним. Чи є тут щось вирішальне? Дякую.
Хуан Франсіско Салдарріага

Який тип поля Pop_2005? Це float чи int?
Фестер

3
Можливо, ви можете встановити лише один розмір маркера, і він очікує значення одного поплавця, а не серії / списку / кортежу чи плаваючих?
derNincompoop

1
Чи варто було б Pop_2005чітко вписати поплавок чи ціле число? geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
om_henners

Відповіді:


7

У геопандах> = 0,3 (опубліковано у вересні 2017 року) побудова точок базується на scatterметоді побудови матплотлібу під кришкою, і це приймає змінний розмір маркерів.

Тож тепер ви можете фактично передати колонку до того markersize, що зробила ОР в оригінальному запитанні:

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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.