La función subplot() en matplotlib ayuda a crear una cuadrícula de subtramas dentro de una sola figura. En una figura, las subparcelas se crean y ordenan por filas desde la parte superior izquierda. Una leyenda en la biblioteca Matplotlib básicamente describe los elementos del gráfico. La leyenda() se puede personalizar y ajustar en cualquier lugar dentro o fuera del gráfico colocándolo en varias posiciones. A veces es necesario crear una sola leyenda para todas las subparcelas. A continuación se muestran los ejemplos que muestran una sola leyenda para todas las subparcelas.
Sintaxis de subtrama():
subplot(nrows,ncols,nsubplot)
Por ejemplo, subparcela (2,1,1) es la figura que representa la primera subparcela con 2 filas y una columna, la primera subparcela se encuentra en la primera fila.
La subparcela (2,1,2) representa la segunda subparcela que se encuentra en la segunda fila de la primera columna.
La sintaxis del comando de leyenda:
legend(*args, **kwargs)
Si la longitud de los argumentos, es decir, args, es 0 en el comando de leyenda, genera automáticamente la leyenda a partir de las propiedades de la etiqueta llamando al método get_legend_handles_labels().
Por ejemplo, ax.legend() es equivalente a:
handles, labels = ax.get_legend_handles_labels() ax.legend(handles, labels)
El método get_legend_handles_labels() devuelve una tupla de dos listas, es decir, una lista de artistas y una lista de etiquetas.
Ejemplo 1:
Python3
# Importing required libraries import matplotlib.pyplot as plt import numpy as np # 2 subplots in 1 row and 2 columns fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) x1 = ['Telugu', 'Hindi', 'English', 'Maths', 'Science', 'Social'] y1 = [45, 34, 30, 45, 50, 38] y2 = [36, 28, 30, 45, 38, 48] # Labels to use in the legend for each line labels = ["in 2019", "in 2020"] # Title for subplots fig.suptitle('Number of Students passed in each subject\ from a class in 2019 & 2020', fontsize=20) # Creating the sub-plots. l1 = ax1.plot(x1, y1, color="green") l2 = ax2.plot(x1, y2, color="blue") ax1.set_yticks(np.arange(0, 51, 5)) ax2.set_yticks(np.arange(0, 51, 5)) ax1.set_ylabel('Number of students', fontsize=25) fig.legend([l1, l2], labels=labels, loc="upper right") # Adjusting the sub-plots plt.subplots_adjust(right=0.9) plt.show()
Producción:
Ejemplo 2:
Python3
# Plotting sub-plots of number of # students passed in each subject # in academic year 2017-20. import matplotlib.pyplot as plt import numpy as np plt.style.use('seaborn') # Plot Styles fig = plt.figure() # 4 subplots in 2 rows and 2 columns in a figure axes = fig.subplots(nrows=2, ncols=2) axes[0, 0].bar(['Telugu', 'Hindi', 'English', 'Maths', 'Science', 'Social'], [50, 27, 42, 34, 45, 48], color='g', label="Students passed in 2017") axes[0, 0].set_yticks(np.arange(0, 51, 5)) axes[0, 1].bar(['Telugu', 'Hindi', 'English', 'Maths', 'Science', 'Social'], [50, 27, 42, 34, 45, 48], color='y', label="Students passed in 2018") axes[0, 1].set_yticks(np.arange(0, 51, 5)) axes[1, 0].bar(['Telugu', 'Hindi', 'English', 'Maths', 'Science', 'Social'], [40, 27, 22, 44, 35, 38], color='r', label="Students passed in 2019") axes[1, 0].set_yticks(np.arange(0, 51, 5)) axes[1, 0].set_xlabel('Subjects', fontsize=25) # rotating third sub-plot x-axis labels for tick in axes[1, 0].get_xticklabels(): tick.set_rotation(45) axes[1, 0].set_ylabel(" Number of Students passed in 2017-2020", fontsize=20) axes[1, 1].bar(['Telugu', 'Hindi', 'English', 'Maths', 'Science', 'Social'], [40, 27, 32, 44, 45, 48], color='b', label="Students passed in 2020") axes[1, 1].set_xlabel('Subjects', fontsize=20) axes[1, 1].set_yticks(np.arange(0, 51, 5)) lines = [] labels = [] for ax in fig.axes: Line, Label = ax.get_legend_handles_labels() # print(Label) lines.extend(Line) labels.extend(Label) # rotating x-axis labels of last sub-plot plt.xticks(rotation=45) fig.legend(lines, labels, loc='upper right') plt.show()
Producción :
Publicación traducida automáticamente
Artículo escrito por greeshmanalla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA