Основываясь на данных из этого вопроса о фасетировании через цикл, мне было интересно, возможно ли это вызвать 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'>