1

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

4

1 回答 1

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 移动图形,图例的位置将自动重新调整。

于 2013-04-27T20:10:25.290 回答