Haga que las subparcelas abarquen varias filas y columnas de la cuadrícula en Matplotlib

En este artículo, vamos a discutir cómo hacer que las subparcelas abarquen múltiples filas y columnas de cuadrícula usando el módulo matplotlib .

Para Representación en Python, la biblioteca matplotlib ha sido el caballo de batalla durante mucho tiempo. Se ha mantenido firme incluso después de que hayan aparecido en escena oponentes más ágiles con una interfaz de código más simple y habilidades como seaborn, plotly, bokeh, etc. A pesar de que Matplotlib puede quedarse corto en las capacidades intuitivas de los pies tiernos, va más allá del uso de imaginar nuestras tareas de investigación de datos en Análisis de datos exploratorios (EDA).  

Durante EDA, uno puede pasar por circunstancias en las que necesitamos mostrar una colección de tramas relacionadas como parte de una imagen más grande para llevar a casa nuestros conocimientos. La capacidad de subtrama de matplotlib se encarga del trabajo por nosotros. Sea como fuere, en circunstancias específicas, es posible que necesitemos unir algunas subparcelas y necesitar proporciones de ángulo distintivas para cada subparcela. 

En primer lugar, importe el submódulo gridspec del módulo matplotlib .

Python3

# import modules
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
 
# create objects
fig = plt.figure()
gs = GridSpec(4, 4, figure=fig)

Primero necesitamos hacer un objeto de GridSpec que nos permita indicar el número absoluto de líneas y segmentos como contenciones en la figura general junto con un objeto de figura.  

Almacenamos el objeto GridSpec en una variable llamada gs e indicamos que necesitamos tener 4 líneas y 4 segmentos en la figura general.  

A continuación se muestran algunos programas para hacer que las subparcelas abarquen múltiples filas y columnas de la cuadrícula: 

Ejemplo 1:

Python3

# explictit function to hide index
# of subplots in the figure
def formatAxes(fig):
    for i, ax in enumerate(fig.axes):
        ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
        ax.tick_params(labelbottom=False, labelleft=False)
 
 
# import required modules
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
 
# create objects
fig = plt.figure(constrained_layout=True)
gs = GridSpec(3, 3, figure=fig)
 
# create sub plots as grid
ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, :-1])
ax3 = fig.add_subplot(gs[1, : -1])
ax4 = fig.add_subplot(gs[-1, 0])
ax5 = fig.add_subplot(gs[-1, -2])
 
# depict illustration
fig.suptitle("Grid-Spec")
formatAxes(fig)
plt.show()

Producción:

Actualmente, necesitamos determinar las sutilezas de cómo cada subparcela atravesará las líneas y segmentos en la figura general. Es valioso hacer un bosquejo duro en papel con respecto a cómo necesita que se extiendan las tramas secundarias, para que no cubran. Cuando haya terminado, pasamos estos datos a través del objeto GridSpec que creamos. La información de longitud de línea/segmento se pasa en documentación de lista similar que usamos para subconjuntos de exhibiciones/marcos de datos con números de lista de líneas y segmentos que comienzan desde cero y utilizan el ‘ :’ para indicar el rango. El objeto GridSpec con el archivo se pasa a la capacidad add_subplot del objeto de figura.  

Agregamos un título general para la figura y eliminamos las marcas para visualizar mejor el formato, ya que el objetivo aquí es mostrar cómo podemos lograr tramas secundarias que se extiendan en diferentes líneas/segmentos. En el momento en que actualice esto, claramente, deberá agregar sus marcas de pivote, nombres, etc. de su marco de datos y cambiar el tamaño de división y figura para cumplir con estos componentes de la trama.  

Ejemplo 2:

Aquí, hemos creado una función explícita para formatear los ejes de la figura, es decir, ocultar los valores de índice de las subtramas.

Python3

# explictit function to hide index
# of sub plots in the figure
def formatAxes(fig):
    for i, ax in enumerate(fig.axes):
        ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
        ax.tick_params(labelbottom=False, labelleft=False)
 
# import required modules
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
 
# create objects
fig = plt.figure(constrained_layout=True)
gs = GridSpec(3, 3, figure=fig)
 
# create sub plots as grid
ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, :-1])
ax3 = fig.add_subplot(gs[1:, -1])
ax4 = fig.add_subplot(gs[-1, 0])
ax5 = fig.add_subplot(gs[-1, -2])
 
# depict illustration
fig.suptitle("GridSpec")
formatAxes(fig)
plt.show()

Producción:

Esto puede resultar útil en gráficos de disposición de tiempo de múltiples variables en los que es posible que necesitemos mostrar el gráfico de disposición de tiempo que se extiende a lo largo de las secciones en la columna superior y otra percepción univariante y multivariante en las otras subtramas debajo. Puede modificar el aspecto de su rompecabezas indicando su línea/secciones en la figura general y los rangos de sus subparcelas individuales.

Ejemplo 3:

Combinando dos tramas secundarias utilizando subtramas y GridSpec , aquí necesitamos consolidar dos tramas secundarias en un formato tomahawks hecho con tramas secundarias. Podemos obtener GridSpec de los tomahawks y luego eliminar los tomahawks cubiertos y llenar el agujero con otros tomahawks más grandes. Aquí hacemos un formato con los dos últimos tomahawks del último tramo unidos.  

Consulte también Modificación de formatos de figuras utilizando GridSpec y diferentes capacidades.

Python3

# import required modules
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
 
# create objects
fig, axes = plt.subplots(ncols=3, nrows=3,)
gs = axes[1, 2].get_gridspec()
 
# create sub plots as grid
for ax in axes[1:, -1]:
    ax.remove()
axsbig = fig.add_subplot(gs[1:, -1])
axsbig.annotate('Big Axes \nGridSpec[1:, -1]',
                (0.1, 0.5),
                xycoords='axes fraction',
                va='center', color="g")
 
# depict illustration
fig.tight_layout()
plt.show()

Producción:

Ejemplo 4:

En este ejemplo, vamos a agregar una subparcela que abarca dos filas.

Python3

# import required modules
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
 
# create objects
fig = plt.figure()
gridspan = fig.add_gridspec(2, 2)
 
# create sub plots as grid
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[1, 0])
ax3 = fig.add_subplot(gs[:, -1])
 
# depict illustration
plt.show()

Producción:

Ejemplo 5:

Aquí, ilustramos una aplicación de subparcelas representando varios gráficos en diferentes cuadrículas de la ilustración.

Python3

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
 
# Create a 2x2 grid of plots
fig, axes = plt.subplots(2, 2, constrained_layout=True)
a = np.linspace(0, 1)
 
# Modify top-left plot
axes[0,0].set_title("Top--Left", color="g")
axes[0,0].plot(x, x)
 
# Modify top-right plot
axes[0,1].set_title("Top--Right", color="r")
axes[0,1].plot(x, x**2)
 
# Modify bottom-left plot
axes[1,0].set_title("Bottom--Left", color="b")
axes[1,0].plot(x, np.sin(3*x))
 
# Modify bottom-right plot
axes[1,1].set_title("Bottom--Right")
axes[1,1].plot(x, 1/(1+x))
 
# Depict illustration
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por ritikkumartiwari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *