Nota
Haga clic aquí para descargar el código de ejemplo completo
Composición de leyendas personalizadas #
Componer leyendas personalizadas pieza por pieza.
Nota
Para obtener más información sobre cómo crear y personalizar leyendas, consulte las siguientes páginas:
A veces, no desea una leyenda que esté vinculada explícitamente a los datos que ha trazado. Por ejemplo, digamos que ha trazado 10 líneas, pero no desea que aparezca un elemento de leyenda para cada una. Si simplemente traza las líneas y llama ax.legend()
a , obtendrá lo siguiente:
import matplotlib as mpl
from matplotlib import cycler
import matplotlib.pyplot as plt
import numpy as np
# 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)
ax.legend()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
<matplotlib.legend.Legend object at 0x7f2cf9d80c40>
Tenga en cuenta que no se crearon entradas de leyenda. En este caso, podemos componer una leyenda utilizando objetos de Matplotlib que no están vinculados explícitamente a los datos que se trazaron. Por ejemplo:
from matplotlib.lines import Line2D
custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
Line2D([0], [0], color=cmap(.5), lw=4),
Line2D([0], [0], color=cmap(1.), lw=4)]
fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])
<matplotlib.legend.Legend object at 0x7f2cfaadfac0>
Hay muchos otros objetos de Matplotlib que se pueden usar de esta manera. En el siguiente código, hemos enumerado algunos comunes.
from matplotlib.patches import Patch
from matplotlib.lines import Line2D
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()
Tiempo total de ejecución del script: (0 minutos 1.610 segundos)