Как в Matplotlib сделать цикл для автоматического построения графиков с заявленными параметрами
Есть функция
def super_show_spb(data, index, values, locality_name, columns=None, aggfunc="count",
fill_value=0, dropna=True, figsize=(12, 5), grid=True, **kwargs):
(city_center_data
.query('locality_name == locality_name')
.pivot_table(index=index, values=values, columns=columns,
aggfunc=aggfunc, fill_value=fill_value, dropna=dropna)
.plot.bar(figsize=figsize, grid=grid, **kwargs))
super_show_spb(data= city_center_data, index='year', values='last_price', locality_name = '"Санкт-Петербург" and cityCenters_nearest_km == 3')
как можно сделать тоже самое через цикл
for columns in city_center_data(['year', 'month', 'weekday']):
(city_center_data.query('locality_name == "Санкт-Петербург" and cityCenters_nearest_km == 3')
.pivot_table(index=column, values= 'last_price', aggfunc='count', fill_value=0)
.plot.bar(figsize=(12, 5), grid=True))
plt.show()
попробовал в формате
for columns in city_centre_data:
columns = (['year', 'month', 'weekday'])
(city_center_data.query('locality_name == "Санкт-Петербург" and cityCenters_nearest_km == 3')
.pivot_table(index=columns, values= 'last_price', aggfunc='count', fill_value=0)
.plot.bar(figsize=(12, 5), grid=True))
plt.show()
но выходят все данные на одном графике В итоге должно получиться три разных графика для столбцов
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Вы рисуете три графика на одном и том же axes. для того, чтобы у вас получилось три отдельных графика, нужно менять axes. Например так:
fig = plt.figure()
total_axes = len(df.columns) # общее количество графиков (в данном случае
# берем равным количеству колонок в датафрейме
subplt = 1 # номер начального axes
for x in df.columns:
ax = fig.add_subplot(total_axes, 1, subplt) # добавляем axes для каждого графика
df[x].plot() #отрисовываем график
subplt+=1
plt.tight_layout()
plt.show()
Автор решения: Anofelesoff
→ Ссылка
У меня еще вышел вот такой вариант
for columns in ['year', 'month', 'weekday']:
(city_center_data.query('locality_name == "Санкт-Петербург" and cityCenters_nearest_km == 3')
.pivot_table(index=columns, values= 'last_price', aggfunc='count', fill_value=0)
.plot.bar(figsize=(12, 5), grid=True))
plt.show()
