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

时间:2012-02-16 00:30:54

标签: matplotlib label font-size legend spacing

我正在编写一个脚本,用于保存具有多种格式样式的图形,其中包含图例文本的字体大小。

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

  1. 使用传奇绘制内容
  2. 保存图形(格式根据rcparams或matplotlibrc文件)
  3. 更改多个格式设置属性(线宽,字体大小等)
  4. 使用更新的格式设置属性再次保存图形,包括重新调整的图例标签间距
  5. 有没有办法在不更改rcparams然后重建图形的情况下执行此操作?

1 个答案:

答案 0 :(得分:6)

只需使用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")