首页 > 解决方案 > 如何将`bbox_to_anchor`的前两个参数设置为左上坐标?

问题描述

matplotlib中,我想绘制一个图例,并将图例放在图下方。所以我写这样的代码:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(5, 7), dpi=300)
ax = fig.add_subplot(111, position=[0.1, 0.28, 0.8, 0.65])
labels = []
for i in range(20):
    ax.plot(data[i, :])
    labels.append(str(i))
ax.legend(labels, ncol=10, loc="lower center", bbox_to_anchor=(0.5, -0.15), prop={"size":6}) 
plt.show()

它运作良好。但是,实际上我不确定图例的高度是多少,例如,如果我更改ncol=5or ncol=2,则图例的顶部和图形的底部会重叠。在我看来,出现这种情况是因为 的前两个参数bbox_to_anchor是边界框的左下角坐标。当然bbox_to_anchor=(0.5, 1)改成上面的设置图例也是一个解决办法,但我认为最好的解决办法可能是把bbox_to_anchor's 参数设置为左上角坐标,让 bbox 从上往下走。

所以我的问题是,有没有办法让bbox_to_anchor' 的起源更高而不是更低?

谢谢!

标签: pythonmatplotlib

解决方案


您应该loc="upper center"ax.legend通话中使用。当locbbox_to_anchor都使用时,loc指定图例框的哪一部分应该放在 给定的位置bbox_to_anchor


推荐阅读