python - 即使调整图形大小,如何获得图例和轴之间的恒定距离?

标签 python matplotlib legend

当使用 bbox_to_anchor 将图例放置在轴之外时,如 this 所示答案是,当调整图形大小时,轴和图例之间的空间会发生变化。对于静态导出的图来说这很好;您可以简单地调整数字,直到得到正确的结果。但对于您可能想要调整大小的交互式绘图,这是一个问题。从这个例子中可以看出:

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(5)
y = np.random.randn(5)

fig, ax = plt.subplots(tight_layout=True)
ax.plot(x, y, label='data1')
ax.plot(x, y-1, label='data2')
legend = ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), ncol=2)
plt.show()

结果:

legend placement ruined by resize

即使调整图形大小,如何确保图例与轴保持相同的距离?

最佳答案

图例与边界框边缘的距离由 borderaxespad 参数设置。 borderaxespad 以字体大小的倍数为单位 - 使其自动独立于轴大小。 所以在这种情况下,

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = np.random.randn(5)

fig, ax = plt.subplots(constrained_layout=True)
ax.plot(x, y, label='data1')
ax.plot(x, y-1, label='data2')
legend = ax.legend(loc="upper center", bbox_to_anchor=(0.5,0), borderaxespad=2)

plt.show()

enter image description here enter image description here

<小时/>

关于在轴下方以恒定距离显示标题的类似问题在 Place title at the bottom of the figure of an axes? 中提出。

关于python - 即使调整图形大小,如何获得图例和轴之间的恒定距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206575/

相关文章:

python - 在日期轴上对齐矩形

python - super 应该始终位于 __init__ 方法的顶部,还是可以位于底部?

python - libsvm的grid.py输出错误

python-2.7 - Matplotlib 无法使用 Python 2.7.3 在 Mac OS 10.8.2 上安装

r - 更改图例中的线条长度

R格包: add legend to a figure

r - ggplot : legend for emojis in plot

python - 如何在 Django 过滤器的 kwargs 中传递用户名?

python - 使用 pip、Mac OSX 安装 tensorflow 的文件夹在哪里?

python - 如何从 Pandas 数据帧返回 groupby 值?