注意
转到末尾下载完整的示例代码。
组成自定义图例#
逐个组成自定义图例。
有时,您不希望图例明确绑定到您绘制的数据。例如,假设您绘制了 10 条线,但不希望每个线都显示一个图例项。如果您只是绘制这些线并调用 ax.legend()
,您将得到以下结果
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
from matplotlib import cycler
# Fixing random state for reproducibility
np.random.seed(19680801)
N = 10
data = (np.geomspace(1, 10, 100) + np.random.randn(N, 100)).T
cmap = plt.cm.coolwarm
mpl.rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))
fig, ax = plt.subplots()
lines = ax.plot(data)
由于数据没有任何标签,因此创建图例需要我们定义图标和标签。在这种情况下,我们可以使用未明确绑定到已绘制数据的 Matplotlib 对象来组成图例。例如
还有许多其他 Matplotlib 对象可以这样使用。在下面的代码中,我们列出了一些常见的对象。
from matplotlib.lines import Line2D
from matplotlib.patches import Patch
legend_elements = [Line2D([0], [0], color='b', lw=4, label='Line'),
Line2D([0], [0], marker='o', color='w', label='Scatter',
markerfacecolor='g', markersize=15),
Patch(facecolor='orange', edgecolor='r',
label='Color Patch')]
# Create the figure
fig, ax = plt.subplots()
ax.legend(handles=legend_elements, loc='center')
plt.show()
脚本总运行时间:(0 分 3.363 秒)