调整Matplotlib中图例的大小

4
我正在尝试使用matplotlib制作自动化图表,将几个不同的特征叠加在一起(背景是填充等高线图,上面一级是pcolormesh)。我要绘制的最顶层的特征是几个散点图,带有不同的标签和图标。
我正在尝试为此图表添加图例,目前使用以下命令:
leg = ax.legend(legplots,
           legnames,
           scatterpoints=1,
           loc='upper center',
           ncol=3,
           fontsize=14,
         bbox_to_anchor=(0.5, -0.14),
          fancybox=True, shadow=True)

假设ax是主坐标轴,legplots和legnames是散点图及其相应标签的列表。
添加图例可以正常工作,但是随着我拥有的legplots数量(以及它们的名称长度)变化,当您动画绘制图时,图例会增长和缩小。如何控制图例框的大小和图例内列的宽度?这个可能吗?
1个回答

5

目前你所指定的范围框大小为0,因为你只指定了它的位置((0.5, -0.14))。

你可以将图例的边界框设置得比0大,并且足够大以容纳最大数量的元素。我认为你需要通过反复试错来找到那个大小。

所以使用完整的4元组符号:

bbox_to_anchor=(x0, y0, width, height)

结合适当的loc参数和关键字参数mode="expand",将允许您使图例足够大以满足您的需求。有关四元组符号的更详细解释,请参见此帖子,并查看图例位置指南


所以这个可以工作...有点。图例框保持固定宽度,但现在似乎有问题重叠两个标题。例如:http://i.imgur.com/RYemFRs.png - Laxsnor
这确实非常奇怪。我不明白这如何与设置图例的边界框有关。我猜想这个问题与代码的其余部分有关,为了解决它,需要创建一个[MCVE]。 - ImportanceOfBeingErnest
这种解决方案的缺点是需要提供图例宽度相对于轴宽度的比例。能够以绝对值指定图例宽度将会很有帮助。 - Bastian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接