Personalizar ejes y barras de color de Matplotlib

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Matplotlib es una biblioteca de Python que permite la creación de visualizaciones estáticas, animadas e interactivas en Python. Se utiliza ampliamente en el cálculo científico, el análisis de datos, el aprendizaje automático y más. En este laboratorio, aprenderá a trazar imágenes utilizando Matplotlib y a manipular la ubicación de los ejes y las barras de color.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas

En este paso, importaremos las bibliotecas necesarias que se utilizarán en este laboratorio. Utilizaremos matplotlib.pyplot y cbook de matplotlib para obtener una imagen de muestra.

import matplotlib.pyplot as plt
from matplotlib import cbook

Obtener imagen de demostración

En este paso, definiremos una función para obtener una imagen de demostración y su extensión. Utilizaremos la función get_sample_data() de cbook para obtener una imagen de muestra.

def get_demo_image():
    z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
    return z, (-3, 4, -4, 3)

Imagen y barra de color simples

En este paso, crearemos una imagen simple y su barra de color. Utilizaremos la función imshow() de pyplot para crear la imagen y la función colorbar() para crear la barra de color.

def demo_simple_image(ax):
    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    cb = plt.colorbar(im)
    cb.ax.yaxis.set_tick_params(labelright=False)

Imagen y barra de color con posicionamiento en tiempo de dibujo: una forma difícil

En este paso, crearemos una imagen y su barra de color con posicionamiento en tiempo de dibujo de una manera difícil. Utilizaremos SubplotDivider de mpl_toolkits.axes_grid1 para crear un divisor para los ejes y la barra de color.

def demo_locatable_axes_hard(fig):
    from mpl_toolkits.axes_grid1 import Size, SubplotDivider

    divider = SubplotDivider(fig, 2, 2, 2, aspect=True)

    ## ejes para la imagen
    ax = fig.add_subplot(axes_locator=divider.new_locator(nx=0, ny=0))
    ## ejes para la barra de color
    ax_cb = fig.add_subplot(axes_locator=divider.new_locator(nx=2, ny=0))

    divider.set_horizontal([
        Size.AxesX(ax),  ## ejes principales
        Size.Fixed(0.05),  ## relleno, 0.1 pulgada
        Size.Fixed(0.2),  ## barra de color, 0.3 pulgada
    ])
    divider.set_vertical([Size.AxesY(ax)])

    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.set_tick_params(labelright=False)

Imagen y barra de color con posicionamiento en tiempo de dibujo: una forma fácil

En este paso, crearemos una imagen y su barra de color con posicionamiento en tiempo de dibujo de una manera fácil. Utilizaremos make_axes_locatable de mpl_toolkits.axes_grid1 para crear un divisor para los ejes y la barra de color.

def demo_locatable_axes_easy(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    ax_cb = divider.append_axes("right", size="5%", pad=0.05)
    fig = ax.get_figure()
    fig.add_axes(ax_cb)

    Z, extent = get_demo_image()
    im = ax.imshow(Z, extent=extent)

    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.tick_right()
    ax_cb.yaxis.set_tick_params(labelright=False)

Dos imágenes una al lado de la otra con relleno fijo

En este paso, crearemos dos imágenes una al lado de la otra con un relleno fijo. Utilizaremos make_axes_locatable de mpl_toolkits.axes_grid1 para crear un divisor para los ejes y la barra de color.

def demo_images_side_by_side(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    Z, extent = get_demo_image()
    ax2 = divider.append_axes("right", size="100%", pad=0.05)
    fig1 = ax.get_figure()
    fig1.add_axes(ax2)

    ax.imshow(Z, extent=extent)
    ax2.imshow(Z, extent=extent)
    ax2.yaxis.set_tick_params(labelleft=False)

Graficado

En este paso, crearemos una figura y agregaremos subgráficos para cada imagen que queramos crear.

def demo():
    fig = plt.figure(figsize=(6, 6))

    ## GRAFICA 1
    ## imagen simple y barra de color
    ax = fig.add_subplot(2, 2, 1)
    demo_simple_image(ax)

    ## GRAFICA 2
    ## imagen y barra de color con posicionamiento en tiempo de dibujo: una forma difícil
    demo_locatable_axes_hard(fig)

    ## GRAFICA 3
    ## imagen y barra de color con posicionamiento en tiempo de dibujo: una forma fácil
    ax = fig.add_subplot(2, 2, 3)
    demo_locatable_axes_easy(ax)

    ## GRAFICA 4
    ## dos imágenes una al lado de la otra con relleno fijo.
    ax = fig.add_subplot(2, 2, 4)
    demo_images_side_by_side(ax)

    plt.show()

Resumen

En este laboratorio, aprendimos cómo graficar imágenes utilizando Matplotlib y cómo manipular la ubicación de los ejes y las barras de color. Cubrimos diferentes maneras de crear imágenes y barras de color y cómo colocarlas en la figura. Con los conocimientos adquiridos en este laboratorio, podrás crear visualizaciones más complejas y manipularlas para adaptarlas a tus necesidades.