在matplotlib中更改图例字体大小后,如何更新图例标签间距?

在matplotlib中更改图例字体大小后,如何更新图例标签间距?,matplotlib,label,font-size,legend,spacing,Matplotlib,Label,Font Size,Legend,Spacing,我正在编写一个脚本,该脚本使用多种格式样式保存一个图形,其中包括图例文本的字体大小 rcparams中的legend.labelspacing或matplotlibrc文件以字体大小的分数指定标签间距,因此,如果字体大小发生更改,则实际间距可能会发生更改。但是,由于实际间距可能是在首次创建图例时计算的,因此对现有图例文本对象字体大小的任何后续更改都不会影响标签间距。在更改现有图例标签对象的字体大小后,是否有方法更新图例标签间距?总之,以下是我想做的: 用一个传说来策划某事 保存图形(根据rcpa

我正在编写一个脚本,该脚本使用多种格式样式保存一个图形,其中包括图例文本的字体大小

rcparams中的legend.labelspacing或matplotlibrc文件以字体大小的分数指定标签间距,因此,如果字体大小发生更改,则实际间距可能会发生更改。但是,由于实际间距可能是在首次创建图例时计算的,因此对现有图例文本对象字体大小的任何后续更改都不会影响标签间距。在更改现有图例标签对象的字体大小后,是否有方法更新图例标签间距?总之,以下是我想做的:

  • 用一个传说来策划某事
  • 保存图形(根据rcparams或matplotlibrc文件的格式)
  • 更改多个格式属性(线宽、字体大小等)
  • 使用更新的格式属性(包括重新调整的图例标签间距)再次保存地物
  • 有没有一种方法可以做到这一点,而无需更改rcparams,然后重新生成图形?

    只需使用labelspacing参数调用legend(),下面是一个示例:

    import pylab as pl
    
    pl.plot([0,1],[0,1], label="a")
    pl.plot([0,2],[0,2], label="b")
    
    pl.legend()
    pl.savefig("p1.png")
    pl.legend(labelspacing=2)
    pl.savefig("p2.png")
    
    要重用参数,请执行以下操作:

    import pylab as pl
    
    pl.plot([0,1],[0,1], label="a")
    pl.plot([0,2],[0,2], label="b")
    params = dict(loc="right", prop=dict(size=9))
    pl.legend(**params)
    pl.savefig("p1.png")
    params["labelspacing"] = 2
    pl.legend(**params)
    pl.savefig("p2.png")
    

    不幸的是,这不起作用,因为它重置了图例位置和标签字体大小。这只是一个示例,演示了如何更改标签间距。您应该通过legend()的其他参数设置图例位置和字体大小。是的,我理解。但是,图例已经创建,使用图例()需要我重新建立所有不需要更改的参数。您可以将所有参数保存在dict PARMS中,并调用图例(**prams),我使用此方法更新了答案。