GeoPandas ile çizimdeki işaretçi boyutunu değiştirme


10

Puan ve bazı ilişkili veriler ile bir coğrafi veri çerçevesi var. Geopandas kullanarak bir harita üzerinde çizmek istiyorum ve noktaların boyutu geodataframe sütunlardan birine karşılık gelir.

Şimdiye kadar aşağıdaki kod var:

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

Ama şu hatayı alıyorum: TypeError: cannot convert the series to <class 'float'>

Herhangi bir fikir?


Tüm kod bu mu?
Fezter

@Fezter, haritayı çizmenin tüm kodu. Geodataframe'i oluşturmak için daha fazla kod var, ancak burada önemli görünmüyordu. Burada önemli bir şey eksik mi? Teşekkürler.
Juan Francisco Saldarriaga

Pop_2005'in alan türü nedir? Şamandıra mı, int mi?
Fezter

3
Sadece tek bir işaretleyici boyutu ayarlayabilir ve bir seri / liste / tuple veya float değil, tek bir float değeri bekliyor olabilir mi?
derNincompoop

1
Pop_2005Bir şamandıra veya tam sayıya açıkça dökülmeye değer mi ? geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
om_henners

Yanıtlar:


7

Geopandalarda> = 0.3 (Eylül 2017'de piyasaya sürüldü), noktaların çizilmesi scatter, başlık altındaki matplotlib'in çizim yöntemine dayanmaktadır ve bu, değişken bir işaret boyutunu kabul eder.

Şimdi markersizeOP'nin orijinal soruda yaptıklarına bir sütun aktarabilirsiniz :

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

verir:

resim açıklamasını buraya girin

Tabii ki, hedefiniz yalnızca işaret boyutunu farklı bir sabit değere değiştirmekse, anahtar kelimeye yine de tek bir kayan nokta geçirebilirsiniz:

cities.plot(markersize=10)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.