Gráficos de flechas con Matplotlib

Beginner

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

Introducción

Matplotlib es una poderosa biblioteca de trazado en Python. Proporciona una variedad de visualizaciones personalizables, como diagramas de líneas, diagramas de dispersión, gráficos de barras, histogramas y más. Una de las visualizaciones que ofrece Matplotlib es el Diagrama de Flechas. Los diagramas de flechas se utilizan para codificar la "fuerza" de las flechas, como las probabilidades de transición en un modelo de Markov, utilizando la longitud, el ancho o el alfa (opacidad) de las flechas.

En este laboratorio, aprenderemos cómo crear diagramas de flechas utilizando Matplotlib. Utilizaremos la función make_arrow_graph() para trazar el diagrama de flechas.

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 su retroalimentación después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas y definir la función

El primer paso es importar las bibliotecas necesarias y definir la función make_arrow_graph(). Esta función toma varios parámetros, como los ejes, los datos, el tamaño, la visualización, la forma, el ancho máximo de flecha, la separación de flechas, el alfa, la normalización de datos, el color del borde, el color de etiqueta y los argumentos clave palabra adicionales. Utiliza estos parámetros para crear un diagrama de flechas.

## Importar bibliotecas
import itertools
import matplotlib.pyplot as plt
import numpy as np

## Definir la función
def make_arrow_graph(ax, data, size=4, display='length', shape='right',
                     max_arrow_width=0.03, arrow_sep=0.02, alpha=0.5,
                     normalize_data=False, ec=None, labelcolor=None,
                     **kwargs):
    """
    Crea un diagrama de flechas.

    Parámetros
    ----------
    ax
        Los ejes donde se dibuja el gráfico.
    data
        Diccionario con las probabilidades de las bases y las transiciones de pares.
    size
        Tamaño del gráfico, en pulgadas.
    display : {'length', 'width', 'alpha'}
        La propiedad de la flecha que se va a cambiar.
    shape : {'full', 'left', 'right'}
        Para flechas completas o semicirculares.
    max_arrow_width : float
        Ancho máximo de una flecha, en coordenadas de datos.
    arrow_sep : float
        Separación entre flechas de un par, en coordenadas de datos.
    alpha : float
        Opacidad máxima de las flechas.
    **kwargs
        Propiedades de `.FancyArrow`, por ejemplo *linewidth* o *edgecolor*.
    """

    ## bloque de código

Definir los datos y trazar el diagrama de flechas

El segundo paso es definir los datos y trazar el diagrama de flechas utilizando la función make_arrow_graph(). Definiremos los datos como un diccionario con las probabilidades de las bases y las transiciones de pares. También estableceremos el tamaño del gráfico en 4 y normalizaremos los datos.

## Definir los datos
data = {
    'A': 0.4, 'T': 0.3, 'G': 0.6, 'C': 0.2,
    'AT': 0.4, 'AC': 0.3, 'AG': 0.2,
    'TA': 0.2, 'TC': 0.3, 'TG': 0.4,
    'CT': 0.2, 'CG': 0.3, 'CA': 0.2,
    'GA': 0.1, 'GT': 0.4, 'GC': 0.1,
}

## Trazar el diagrama de flechas
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])

for display, ax in axs.items():
    make_arrow_graph(
        ax, data, display=display, linewidth=0.001, edgecolor=None,
        normalize_data=True, size=size)

plt.show()

Personalizar el diagrama de flechas

El tercer paso es personalizar el diagrama de flechas. Podemos cambiar la propiedad de la flecha para mostrar utilizando el parámetro display. También podemos cambiar la forma de la flecha utilizando el parámetro shape. Podemos ajustar el ancho y la separación de las flechas utilizando los parámetros max_arrow_width y arrow_sep, respectivamente. Podemos cambiar la transparencia de las flechas utilizando el parámetro alpha. También podemos cambiar el color de la etiqueta utilizando el parámetro labelcolor.

## Trazar el diagrama de flechas con personalizaciones
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])

for display, ax in axs.items():
    make_arrow_graph(
        ax, data, display=display, linewidth=0.001, edgecolor=None,
        normalize_data=True, size=size, shape='full', max_arrow_width=0.05,
        arrow_sep=0.03, alpha=0.7, labelcolor='white')

plt.show()

Interpretar el diagrama de flechas

El cuarto paso es interpretar el diagrama de flechas. La longitud, el ancho y la opacidad de las flechas representan la fuerza de la flecha. El diagrama de flechas se puede utilizar para codificar la "fuerza" de la flecha, como las probabilidades de transición en un modelo de Markov, utilizando la longitud, el ancho o el alfa (opacidad) de la flecha. Las etiquetas en las flechas representan las probabilidades de las bases y las transiciones de pares.

Resumen

En este laboratorio, aprendimos cómo crear diagramas de flechas utilizando Matplotlib. Utilizamos la función make_arrow_graph() para trazar el diagrama de flechas. Personalizamos el diagrama de flechas cambiando la propiedad de la flecha para mostrar, cambiando la forma de la flecha, ajustando el ancho y la separación de las flechas, cambiando la transparencia de las flechas y cambiando el color de la etiqueta. También interpretamos el diagrama de flechas comprendiendo que la longitud, el ancho y la opacidad de las flechas representan la fuerza de la flecha, y las etiquetas en las flechas representan las probabilidades de las bases y las transiciones de pares.