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 का क्षेत्र प्रकार क्या है? क्या यह फ्लोट या इंट है?
Fezter

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.