我在Python中用pyplot创建绘图。每个图包含两个或更多个子图。我知道我可以通过定义参数loc
静态地在图中放置一个图例;但是,我选择的位置有时会覆盖我的情节中的数据。如何将图例动态放置在干扰数据最少的位置?
答案 0 :(得分:2)
正如tcaswell已经说过的那样,使用ax.legend(loc='best')
:
import matplotlib.pyplot as plt
import numpy as np
pi = np.pi
sin = np.sin
t = np.linspace(0.0, 2 * pi, 50)
markers = ['+', '*', ',', ] + [r'$\lambda$']
phases = [0, 0.5]
fig, ax = plt.subplots(len(phases))
for axnum, phase in enumerate(phases):
for i, marker in enumerate(markers, 1):
ax[axnum].plot(t, i*sin(2*t + phase*pi), marker=marker,
label='$i,\phi = {i},{p}$'.format(i=i, p=phase))
ax[axnum].legend(loc='best', numpoints=1)
plt.show()
有趣的是,图例的位置并不固定。如果你 使用GUI移动图形,图例的位置将自动重新调整。