python - matplotlib 图例位置默认

标签 python matplotlib legend

我经常使用 legend(loc='best')。我注意到它似乎默认位于右上角,如果有很多空间可用的话。但是,我希望 loc='best' 默认位于左上角。 (如何)有可能改变这种行为?

最佳答案

你可以 monkeypatch matplotlib.legend.Legend._get_anchored_bbox。此函数包含以下代码:

BEST, UR, UL, LL, LR, R, CL, CR, LC, UC, C = list(xrange(11))

anchor_coefs = {UR: "NE",
                UL: "NW",
                LL: "SW",
                LR: "SE",
                R: "E",
                CL: "W",
                CR: "E",
                LC: "S",
                UC: "N",
                C: "C"}

这会将连续的“位置代码”映射到空间位置。 _find_best_position 中的不良计算代码通过占据序列中最早的位置来打破不良关系,因此右上角将获胜,除非另一个位置实际上更好。我认为您可以安全地交换代码,方法是编写一个新版本的函数,将第一行更改为:

 BEST, UL, UR, LL, LR, R, CL, CR, LC, UC, C = list(xrange(11))

请注意,我切换了 UL 和 UR。当我在一个简单的 V 形图上尝试这样做时,它在更改前将图例放在右上角,但在更改后放在左上角。

要在更改中进行 monkeypatch,您应该重新定义您自己的 _get_anchored_bbox 版本,然后执行 matplotlib.legend.Legend._get_anchored_bbox = my_get_anchored_bbox

任何此类 monkeypatched 解决方案都应视为脆弱的。如果在以后的 matplotlib 版本中发生某些更改,它可能会中断,因为它涉及覆盖您不应该搞砸的内部功能。在 matplotlib 邮件列表上询问,或在错误跟踪器中提出问题,请求可配置的参数来设置打破平局顺序可能是更好的主意。

关于python - matplotlib 图例位置默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536076/

相关文章:

python - Tensorflow Beta 2.0 中的 tf.keras 是否支持自动混合精度?

python - matplotlib boxplot xticks 向 y 轴移动

matplotlib - 在 matplotlib 中向日期格式的时间序列添加垂直线

python - 如何平息我的阴谋

python-3.x - 如何删除图例的特定部分(seaborn,散点图)

r - 无法更改 ggplot2 中的图例

python - 线性规划求解器忽略约束

python - rect.collisionrect 在两个矩形之间不起作用

python - Vagrant + Ansible + Python3

javascript - 需要 jQuery.Flot 图例格式方面的帮助