Traçage d'flèches avec Matplotlib

Beginner

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

Introduction

Matplotlib est une puissante bibliothèque de tracé en Python. Elle propose une variété de visualisations personnalisables telles que des graphiques de courbes, des graphiques de dispersion, des diagrammes en barres, des histogrammes, etc. L'une des visualisations que Matplotlib propose est le graphique d'flèches. Les graphiques d'flèches sont utilisés pour encoder la "force" des flèches telles que les probabilités de transition dans un modèle de Markov en utilisant la longueur, la largeur ou l'alpha (opacité) des flèches.

Dans ce laboratoire, nous allons apprendre à créer des graphiques d'flèches à l'aide de Matplotlib. Nous utiliserons la fonction make_arrow_graph() pour tracer le graphique d'flèches.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques et définition de la fonction

La première étape consiste à importer les bibliothèques nécessaires et à définir la fonction make_arrow_graph(). Cette fonction prend différents paramètres tels que les axes, les données, la taille, l'affichage, la forme, la largeur maximale de flèche, l'espacement entre les flèches, l'alpha, la normalisation des données, la couleur du contour, la couleur des étiquettes et les kwargs. Elle utilise ces paramètres pour créer un graphique d'flèches.

## Importation des bibliothèques
import itertools
import matplotlib.pyplot as plt
import numpy as np

## Définition de la fonction
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):
    """
    Crée un graphique d'flèches.

    Paramètres
    ----------
    ax
        Les axes sur lesquels le graphique est tracé.
    data
        Dictionnaire avec les probabilités pour les bases et les transitions entre paires.
    size
        Taille du graphique, en pouces.
    display : {'length', 'width', 'alpha'}
        La propriété de la flèche à modifier.
    shape : {'full', 'left', 'right'}
        Pour les flèches complètes ou semi-complètes.
    max_arrow_width : float
        Largeur maximale d'une flèche, en coordonnées de données.
    arrow_sep : float
        Écartement entre les flèches d'une paire, en coordonnées de données.
    alpha : float
        Opacité maximale des flèches.
    **kwargs
        Propriétés de `.FancyArrow`, par exemple *linewidth* ou *edgecolor*.
    """

    ## bloc de code

Définition des données et tracé du graphique d'flèches

La deuxième étape consiste à définir les données et à tracer le graphique d'flèches à l'aide de la fonction make_arrow_graph(). Nous allons définir les données comme un dictionnaire avec les probabilités pour les bases et les transitions entre paires. Nous allons également définir la taille du graphique à 4 et normaliser les données.

## Définition des données
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,
}

## Tracé du graphique d'flèches
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()

Personnaliser le graphique d'flèches

La troisième étape consiste à personnaliser le graphique d'flèches. Nous pouvons changer la propriété de la flèche à afficher en utilisant le paramètre display. Nous pouvons également changer la forme de la flèche en utilisant le paramètre shape. Nous pouvons ajuster la largeur et l'écartement des flèches en utilisant respectivement les paramètres max_arrow_width et arrow_sep. Nous pouvons changer la transparence des flèches en utilisant le paramètre alpha. Nous pouvons également changer la couleur de l'étiquette en utilisant le paramètre labelcolor.

## Tracé du graphique d'flèches avec des personnalisations
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()

Interpréter le graphique d'flèches

La quatrième étape consiste à interpréter le graphique d'flèches. La longueur, la largeur et l'opacité des flèches représentent la force de la flèche. Le graphique d'flèches peut être utilisé pour encoder la "force" des flèches telles que les probabilités de transition dans un modèle de Markov en utilisant la longueur, la largeur ou l'alpha (opacité) des flèches. Les étiquettes sur les flèches représentent les probabilités pour les bases et les transitions entre paires.

Sommaire

Dans ce laboratoire, nous avons appris à créer des graphiques d'flèches à l'aide de Matplotlib. Nous avons utilisé la fonction make_arrow_graph() pour tracer le graphique d'flèches. Nous avons personnalisé le graphique d'flèches en changeant la propriété de la flèche à afficher, en changeant la forme de la flèche, en ajustant la largeur et l'écartement des flèches, en changeant la transparence des flèches et en changeant la couleur de l'étiquette. Nous avons également interprété le graphique d'flèches en comprenant que la longueur, la largeur et l'opacité des flèches représentent la force de la flèche, et que les étiquettes sur les flèches représentent les probabilités pour les bases et les transitions entre paires.