ループによるファセットに関するこの質問からのデータに基づいて、 を呼び出してax = df.plot(kind='bar')
、生成されAxesSubplot
たオブジェクトを特定の軸位置/座標に割り当てることができるかどうか疑問に思っていましたか? (ファセット行 1、列 1、2、3 など...)?
私が質問している理由は、バー プロット自体をファセットするためではなく、geopandas
ライブラリを使用してマップを作成するためです。棒グラフで機能する場合は、geopandas geodataframe.plot() 呼び出しでも機能する可能性があります。軸自体からマップをプロットすることはできないため、逆の方法でプロット呼び出しの副産物として軸を取得し、それをグリッドに適切に配置する必要があるようです。
動作しない例 -- ループは実際には疑似です。毎回別のパネルをプロットするために軸インデックスを移動しません (実際、サブプロット呼び出しから軸オブジェクトを上書きします)。ただし、それは私がやりたいことです-サブプロット呼び出しからのプロット呼び出しから生成された軸オブジェクトを軸(座標空間)にマップします)。
N = 100
industry = ['a','b','c']
city = ['x','y','z']
ind = np.random.choice(industry, N)
cty = np.random.choice(city, N)
jobs = np.random.randint(low=1,high=250,size=N)
df_city =pd.DataFrame({'industry':ind,'city':cty,'jobs':jobs})
## how many panels do we need?
cols =df_city.city.value_counts().shape[0]
fig, axes = plt.subplots(1, cols, figsize=(8, 8))
for x, city in enumerate(df_city.city.value_counts().index.values):
data = df_city[(df_city['city'] == city)]
data = data.groupby(['industry']).jobs.sum()
axes = data.plot(kind='bar')
print type(axes)
fig.suptitle('Employment By Industry By City', fontsize=20)
<class 'matplotlib.axes._subplots.AxesSubplot'>
<class 'matplotlib.axes._subplots.AxesSubplot'>
<class 'matplotlib.axes._subplots.AxesSubplot'>