import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
fig = plt.figure()
ax = plt.subplot(111)
for i in xrange(5):
ax.plot(x, i * x, label='$y = %ix$' % i)
ax.legend(bbox_to_anchor=(1.1, 1.05))
plt.show()
在上面的代码中,我遇到了函数bbox_to_anchor,它将图例置于任意位置。我无法理解函数的前两个论证,所有的谎言都是标准化的轴参数。任何人都可以解释它们是什么以及如何操纵它们吗?
答案 0 :(得分:3)
这不是一个函数,而是一个关键字参数。
摘要:您使用loc
指定图例的一角,并可选择bbox_to_anchor
来指定该角落的位置。默认情况下,图例的指定角将放置在轴的同一角上。
例如loc='upper right'
只会将图例的右上角放在轴的右上角:
ax.legend(loc='upper right')
但如果您希望图例的右上角位于轴的中间左侧,则可以使用bbox_to_anchor=(0, 0.5)
:
ax.legend(loc='upper right', bbox_to_anchor=(0, 0.5))
答案 1 :(得分:1)
尝试通过玩弄参数来理解 -
ax.legend(bbox_to_anchor=(0,0))
它将图例放在左下角。现在让我们说我想要它在右上角;我会做的
ax.legend(bbox_to_anchor=(1,1))
并且会得到 - 所以基本上,这两个参数操纵图例框的位置相对于它们出现的位置 -
如果我将第一个数字设置为0,则图例将位于最左侧。如果我把它设置为1,它将是最右边的。
如果我将第二个数字设置为0,则图例框将放置在最底部,将其设置为1会将其置于顶部。
例如,如果我希望我的图例框位于右下方,我会将这些参数设置为(1,0)。
设置0到1之间的数字会相应地操纵位置。
因此,如果我设置(0.5,0.5),它将位于中间的某个位置,并且这个定位发生在轴上。这就是为什么它在文档中写得如此。
希望这可以解决它!