GeoPandasでプロットのマーカーサイズを変更する


10

ポイントといくつかの関連データを含むgeodataframeがあります。geopandasを使用して地図上にプロットし、ポイントのサイズをgeodataframeの列の1つに対応させます。

これまでのところ、私は次のコードを持っています:

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は、地図を描画するためのすべてのコードです。geodataframeを構築するためのコードは他にもありますが、ここでは関係がないようです。ここで欠けている重要なものはありますか?ありがとう。
ファンサンフランシスコサルダリアガ2017年

Pop_2005のフィールドタイプは何ですか?floatかintですか?
Fezter

3
マーカーサイズは1つしか設定できず、シリーズ/リスト/タプルやフロートではなく、1つのフロート値が必要なのでしょうか。
derNincompoop 2017

1
Pop_2005floatまたはintegerに明示的にキャストする価値はありますか?geo_df['Pop_2005'] = geo_df['Pop_2005'].astype(float)
om_henners 2018

回答:


7

geopandas> = 0.3(2017年9月リリース)では、ポイントのプロットはscatter内部でのmatplotlib のプロットメソッドに基づいており、これは可変のマーカーサイズを受け入れます。

したがって、実際に列をに渡すことができますmarkersize。OPは元の質問で何をしたのですか。

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

与える:

ここに画像の説明を入力してください

もちろん、マーカーサイズを別の定数値に変更するだけの場合は、キーワードに1つの浮動小数点数を渡すことができます。

cities.plot(markersize=10)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.