我想在Python的另一个框中将我的标签放在我的情节之上。我现有的情节如下:
这是我的代码:
fig = plt.figure()
plt.plot(t, sol[:,0], 'blue', lw = 3, label='$N$')
plt.plot(t, sol[:,1], 'green', lw = 3, label='$P$')
plt.plot(t, sol[:,2], 'red', lw = 3, label='$Z$')
plt.plot(t, sol[:,3], 'black', lw = 3, label='$Z$')
plt.legend(loc='best')
plt.xlabel('Time (days)', fontsize=10.)
plt.ylabel('$N,P,Z,D$ ($\mu$mol N L$^{-1}$)', fontsize=10.)
plt.xlim([0.,365.*sim_years])
plt.ylim([0,16])
plt.xticks(fontsize=10.)
plt.yticks(fontsize=10.)
plt.grid()
plt.show()
我希望标签看起来像这样:
答案 0 :(得分:0)
这篇文章的标题有点误导。
我想这就是你所追求的:http://matplotlib.org/1.3.0/examples/pylab_examples/legend_demo.html
答案 1 :(得分:0)
您可以尝试将bbox_to_anchor
参数用于plt.legend()
。这使您可以对位置进行额外控制:
import matplotlib.pyplot as plt
import numpy as np
# Demo data
sol = np.array([[3,3,4,3], [1,4,2,7], [2,5,3,10], [3,6,4,15], [5,8,2,14]])
t = [100, 200, 300, 400, 500]
fig = plt.figure()
plt.plot(t, sol[:,0], 'blue', lw = 3, label='$N$')
plt.plot(t, sol[:,1], 'green', lw = 3, label='$P$')
plt.plot(t, sol[:,2], 'red', lw = 3, label='$Z$')
plt.plot(t, sol[:,3], 'black', lw = 3, label='$Z$')
plt.legend(loc='upper center', ncol=4, bbox_to_anchor=(0.5, 1.1))
plt.xlabel('Time (days)', fontsize=10.)
plt.ylabel('$N,P,Z,D$ ($\mu$mol N L$^{-1}$)', fontsize=10.)
#plt.xlim([0.,365.*sim_years])
plt.ylim([0,16])
plt.xticks(fontsize=10.)
plt.yticks(fontsize=10.)
plt.grid()
plt.show()
这将显示如下:
此处bbox_to_anchor=(0.5, 1.1)
表示水平方向的一半,1.0
位于顶部,因此1.1
位于顶部之上。 ncols=4
用于使其水平显示。