我已经检查了SO上的其他答案,这些答案似乎并没有帮助我解决此问题。我已经从pandas
df
的一列创建了子图。我希望每个subplot
在每个标题的结尾都有一个唯一的日期,这是我试图循环执行的。发生的情况是标题仅出现在最后一个图形上,而没有其他标题。为什么会这样?
area2011 = df_2011.groupby(['Area Id']).size()
area2012 = df_2012.groupby(['Area Id']).size()
area2013 = df_2013.groupby(['Area Id']).size()
area2014 = df_2014.groupby(['Area Id']).size()
area2015 = df_2015.groupby(['Area Id']).size()
area2016 = df_2016.groupby(['Area Id']).size()
area_list = [area2011, area2012, area2013, area2014, area2015, area2016]
fig, axes = plt.subplots(2, 3)
for i in range(2011, 2017):
for d, ax in zip(area_list, axes.ravel()):
plt.title(f'Area Id crimes in {i}')
d.plot.bar(ax=ax, figsize=(15, 7))
plt.tight_layout()
从第一个subplot
到最后一个,我要制作:
"Area Id crimes in 2011"
.
.
.
"Area Id crimes in 2016"
答案 0 :(得分:1)
我认为发布答案更快。这样就可以了:
for i in range(2011, 2017):
for d, ax in zip(area_list, axes.ravel()):
plt.title(f'Area Id crimes in {i}')
d.plot.bar(ax=ax, figsize=(15, 7))
plt.tight_layout()
外部for
循环在最后一次运行(i=2016
)时会将所有内容设置为f'Area Id crimes in {i}'
,即'Area Id crimes in 2016'
。
for d, i in zip(area_list, range(6)):
ax = axes.ravel()[i];
ax.set_title(f'Area Id crimes in {i+2011}')
d.plot.bar(ax=ax, figsize=(15, 7))
plt.tight_layout()