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

发布于 2025-01-05 15:45:14 字数 436 浏览 1 评论 0原文

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

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

  1. 用图例绘制一些内容
  2. 保存图形(根据 rcparams 或 matplotlibrc 文件的格式)
  3. 更改几个格式属性(线宽、字体大小等)
  4. 使用更新的格式再次保存图形属性,包括重新调整的图例标签间距

有没有办法在不更改 rcparams 然后重建图形的情况下执行此操作?

I'm writing a script that saves a figure with multiple formatting styles among which is the font size of legend text.

The legend.labelspacing in rcparams or the matplotlibrc file specifies the label spacing in fractions of the font size, so I might expect the actual spacing to change if the font size is changed. However, since the actual spacing is probably calculated when the legend is first created, any subsequent change to the font size of existing legend text objects has no effect on the label spacing. Is there a way to update the legend label spacing after an existing legend label object's font size has been changed? In summary here's is what I would like to do:

  1. plot something with a legend
  2. save the figure (format according to rcparams or matplotlibrc file)
  3. change several formatting properties (line widths, font sizes, etc.)
  4. save the figure again with the updated formatting properties, including re-adjusted legend label spacing

Is there a way to do this without changing the rcparams and then rebuilding the figure?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我爱人 2025-01-12 15:45:14

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

Just call legend() with labelspacing parameter, here is an example:

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

To reuse parameters:

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")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文