动态地将图例放置在图中

时间:2013-04-27 19:00:40

标签: python matplotlib

我在Python中用pyplot创建绘图。每个图包含两个或更多个子图。我知道我可以通过定义参数loc静态地在图中放置一个图例;但是,我选择的位置有时会覆盖我的情节中的数据。如何将图例动态放置在干扰数据最少的位置?

1 个答案:

答案 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()

enter image description here

有趣的是,图例的位置并不固定。如果你 使用GUI移动图形,图例的位置将自动重新调整。