为 pandas 图的每个子图的图例文本定义字体大小

Define fontsize for the legend text of every subplot of pandas figure

我有多个数据帧,我为每个数据帧绘制了性能指标。 每个数据框看起来像(每个 df 中的列数不同):

    index,jack,steve,bob,sandra,helen,tracy
    1,300,100,110,500,120,100
    2,30,20,150,200,10,120
    3,320,110,190,50,12,130
    4,300,100,110,500,120,100 
    5,400,120,100,450,100,90

我想在同一图的单独子图中绘制每一列并将其保存在 png 文件中。

我找不到如何更改图例的字体大小(给定示例中学生的姓名),当我使用以下代码段时 plt.legend 只有最后一个图例大小已更新,但不是每个子图的图例。

def plot_subplot(df, group):
    ax = df.plot(subplots=True, fontsize=20, figsize=(80,40))
    plt.legend(loc='best', prop={'size': 30})
    ax[0].get_figure().savefig("{}.png".format(group), bbox_inches='tight', dpi=100)

因为每个数据框中的列数不同,我事先不知道该函数将为给定图生成多少个子图。我正在使用 subplots=True 参数,而不是通过 ax1、ax2 等手动定义每个子图的位置。这就是为什么我正在寻找与此用例兼容的解决方案。

问题是 df.plot 当前 returns list of Axes(由于 subplots=True),所以你应该迭代 ax:

def plot_subplot(df, group):
    ax = df.plot(subplots=True, fontsize=20, figsize=(80, 40))
    
    # iterate all Axes
    for a in ax:
        a.legend(loc='best', prop={'size': 30})
    
    ax[0].get_figure().savefig('{}.png'.format(group), bbox_inches='tight', dpi=100)