为 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)
我有多个数据帧,我为每个数据帧绘制了性能指标。 每个数据框看起来像(每个 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)