问题描述
我正在尝试协调ax.legend()
和ax.text()
的位置,但是看来选项loc = 'best'
不太聪明
显然,图例阻止了文本,我知道我可以改用loc = 'lower left'
,但我很好奇,为什么图例不关心文本?
这是代码
import numpy
## matplotlib
import matplotlib
matplotlib.use('Agg')
import pylab
from matplotlib import rc
rc('font',**{'family': 'sans-serif','sans-serif': ['Times-Roman']})
rc('text',usetex = True)
matplotlib.rcParams['text.latex.preamble'] = [r"\usepackage{amsmath}"]
def test_plot():
n_columns,n_rows = 1,1
pylab.figure(figsize = (n_columns * 2.5,n_rows * 2.0))
axs = {}
xs = numpy.linspace(0.0001,2.0 * numpy.pi,100)
ax = pylab.subplot(n_rows,n_columns,1)
axs[1] = ax
ys = numpy.sin(xs) / xs
ax.plot(xs,ys,label = r'$1$')
ax.text(0.8,0.8,r'$\frac{\sin{x}}{x}$',transform = ax.transAxes)
ax.legend(loc = 'best',frameon = 0)
pylab.tight_layout()
pylab.savefig('./test.png',dpi = 2000)
return
if __name__ == '__main__':
test_plot()
谢谢!
解决方法
所以您想将图例放在左上角以外的任何地方...?您总是可以使用:
import random
spot = ["center","upper center","lower center","right","upper right","lower right","left","lower left"]
random_spot = spot[random.randint(0,spot.__len__() - 1)]
plt.legend(loc=random_spot,borderaxespad=1)
或“左”,“左下”,“中心”,“上中心”,“下中心”,“右”或“右下”
或者,如果您希望它在选择一个随机点的同时避免出现“左上方”:
{{1}}
这应该将其随机放置在左上角以外的任何位置。这就是您需要的吗?