向matplotlib中forloop内的子地块添加唯一标题

2024-09-29 19:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我查了其他的答案,似乎对我解决这个问题没有帮助。我已经从pandasdf中的列创建了子图。我希望每个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"

Tags: inid标题dfsizepltareaax
1条回答
网友
1楼 · 发布于 2024-09-29 19:34:23

我觉得贴个答案比较快。所以就这样:

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()

在最后一次运行(i=2016)时,外部for循环将所有内容设置为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()

相关问题 更多 >

    热门问题