Nota
Haga clic aquí para descargar el código de ejemplo completo
Creando múltiples subparcelas usando plt.subplots
#
pyplot.subplots
crea una figura y una cuadrícula de subparcelas con una sola llamada, al tiempo que proporciona un control razonable sobre cómo se crean las parcelas individuales. Para casos de uso más avanzados, puede usar GridSpec
para un diseño de subgráfico más general o Figure.add_subplot
para agregar subgráficos en ubicaciones arbitrarias dentro de la figura.
Una figura con una sola subtrama #
subplots()
sin argumentos devuelve a Figure
y a single
Axes
.
Esta es en realidad la forma más sencilla y recomendada de crear una única figura y ejes.
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
Text(0.5, 1.0, 'A single plot')
Apilando subparcelas en una dirección #
Los dos primeros argumentos opcionales de pyplot.subplots
definen el número de filas y columnas de la cuadrícula de la subparcela.
Cuando se apila en una sola dirección, el axs
resultado es una matriz numérica 1D que contiene la lista de ejes creados.
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2d00efd510>]
Si está creando solo unos pocos ejes, es útil descomprimirlos inmediatamente en variables dedicadas para cada eje. De esa manera, podemos usar ax1
en lugar del más detallado axs[0]
.
fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2d00a95b70>]
Para obtener subparcelas una al lado de la otra, pase parámetros para una fila y dos columnas.1, 2
fig, (ax1, ax2) = plt.subplots(1, 2)
fig.suptitle('Horizontally stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2cfb43d330>]
Apilando subtramas en dos direcciones #
Cuando se apila en dos direcciones, el resultado axs
es una matriz 2D NumPy.
Si tiene que establecer parámetros para cada subparcela, es útil iterar sobre todas las subparcelas en una cuadrícula 2D usando .for ax in axs.flat:
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Axis [0, 0]')
axs[0, 1].plot(x, y, 'tab:orange')
axs[0, 1].set_title('Axis [0, 1]')
axs[1, 0].plot(x, -y, 'tab:green')
axs[1, 0].set_title('Axis [1, 0]')
axs[1, 1].plot(x, -y, 'tab:red')
axs[1, 1].set_title('Axis [1, 1]')
for ax in axs.flat:
ax.set(xlabel='x-label', ylabel='y-label')
# Hide x labels and tick labels for top plots and y ticks for right plots.
for ax in axs.flat:
ax.label_outer()
Puede usar el desempaquetado de tuplas también en 2D para asignar todas las subparcelas a variables dedicadas:
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
fig.suptitle('Sharing x per column, y per row')
ax1.plot(x, y)
ax2.plot(x, y**2, 'tab:orange')
ax3.plot(x, -y, 'tab:green')
ax4.plot(x, -y**2, 'tab:red')
for ax in fig.get_axes():
ax.label_outer()
Ejes polares #
El parámetro subplot_kw de pyplot.subplots
controla las propiedades de la subparcela (ver también Figure.add_subplot
). En particular, esto se puede usar para crear una cuadrícula de ejes polares.
Tiempo total de ejecución del script: (0 minutos 7.774 segundos)