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