Agregar ejes insertados a figuras de Matplotlib |  de Andy McDonald |  noviembre de 2023

Un tutorial sobre cómo agregar ejes insertados a una figura de Matplotlib para mejorar la visualización de datos

Imagen creada por DALL-E 3 por el autor.

Al crear figuras en matplotlib, puede haber ocasiones en las que desee agregar una figura más pequeña o ejes dentro de su figura principal. Esto podría deberse a varias razones, pero lo más común es que se utilice para resaltar un área de interés y ampliarla o para incluir información adicional relacionada con la figura principal.

Matplotlib simplifica este proceso al permitirnos agregar ejes insertados dentro de la figura principal. Luego, esto se puede modificar aún más para que la información que queremos se muestre como queremos.

En este breve tutorial, veremos cómo crear un mapa de ubicación de pozo simple, como el que se muestra a continuación, usando coordenadas de cuadrícula. Luego agregaremos ejes insertados para resaltar y ampliar un área más pequeña del mapa principal.

La figura final de matplotlib que contiene inset_axes resalta una selección más pequeña de pozos. Imagen del autor.

El primer paso de nuestro tutorial es importar las bibliotecas que vamos a utilizar.

Las dos primeras declaraciones de importación deberían resultarle familiares: importar pandas y matplotib. La tercera importación de mpl.toolkits.axes_grid1.inset_locator nos permite trazar nuestra figura insertada dentro de los límites de nuestra figura principal.

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes, mark_inset

Una vez importadas las bibliotecas, podemos importar los datos. Los datos utilizados aquí provienen de la competencia Force 2020 Xeek Machine Learning y contienen alrededor de 100 pozos de mediciones de registro de pozos.

Como este archivo está delimitado por un punto y coma ( ; ) necesitamos incluir un parámetro adicional para indicarle al pd.read_csv() función que es lo que es el separador entre los valores.

df = pd.read_csv('../data/Xeek Force 2020/train.csv', sep=';')