Créer le logo de Matplotlib avec Python

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à créer le logo de Matplotlib à l'aide de Python. La bibliothèque Matplotlib est un outil de visualisation de données populaire pour Python et est largement utilisé dans le calcul scientifique.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

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

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

Importation des bibliothèques requises

Dans cette étape, nous allons importer les bibliothèques nécessaires, y compris Matplotlib et NumPy.

import matplotlib.pyplot as plt
import numpy as np

Définition des constantes

Dans cette étape, nous allons définir quelques constantes, y compris la couleur du logo et la police de caractères.

MPL_BLUE = '#11557c'

def get_font_properties():
    ## La police d'origine est Calibri, si elle n'est pas installée, on utilise
    ## Carlito, qui est métriquement équivalent.
    if 'Calibri' in matplotlib.font_manager.findfont('Calibri:bold'):
        return matplotlib.font_manager.FontProperties(family='Calibri',
                                                      weight='bold')
    if 'Carlito' in matplotlib.font_manager.findfont('Carlito:bold'):
        print('Police d\'origine non trouvée. Passage à Carlito. '
              'Le texte du logo ne sera pas dans la police correcte.')
        return matplotlib.font_manager.FontProperties(family='Carlito',
                                                      weight='bold')
    print('Police d\'origine non trouvée. '
          'Le texte du logo ne sera pas dans la police correcte.')
    return None

Création des axes de l'icône

Dans cette étape, nous allons créer un axe polaire contenant le graphique radar de Matplotlib.

def create_icon_axes(fig, ax_position, lw_bars, lw_grid, lw_border, rgrid):
    """
    Crée un axe polaire contenant le graphique radar de matplotlib.

    Paramètres
    ----------
    fig : matplotlib.figure.Figure
        La figure dans laquelle tracer.
    ax_position : (float, float, float, float)
        La position de l'Axe créé dans les coordonnées de la figure sous la forme
        (x, y, largeur, hauteur).
    lw_bars : float
        La largeur de ligne des barres.
    lw_grid : float
        La largeur de ligne de la grille.
    lw_border : float
        La largeur de ligne de la bordure de l'Axe.
    rgrid : array-like
        Positions de la grille radiale.

    Retours
    -------
    ax : matplotlib.axes.Axes
        L'Axe créé.
    """
    with plt.rc_context({'axes.edgecolor': MPL_BLUE,
                         'axes.linewidth': lw_border}):
        ax = fig.add_axes(ax_position, projection='polar')
        ax.set_axisbelow(True)

        N = 7
        arc = 2. * np.pi
        theta = np.arange(0.0, arc, arc / N)
        radii = np.array([2, 6, 8, 7, 4, 5, 8])
        width = np.pi / 4 * np.array([0.4, 0.4, 0.6, 0.8, 0.2, 0.5, 0.3])
        bars = ax.bar(theta, radii, width=width, bottom=0.0, align='edge',
                      edgecolor='0.3', lw=lw_bars)
        for r, bar in zip(radii, bars):
            color = *cm.jet(r / 10.)[:3], 0.6  ## couleur issue de jet avec alpha=0.6
            bar.set_facecolor(color)

        ax.tick_params(labelbottom=False, labeltop=False,
                       labelleft=False, labelright=False)

        ax.grid(lw=lw_grid, color='0.9')
        ax.set_rmax(9)
        ax.set_yticks(rgrid)

        ## le fond visible réel - s'étend un peu au-delà de l'axe
        ax.add_patch(Rectangle((0, 0), arc, 9.58,
                               facecolor='white', zorder=0,
                               clip_on=False, in_layout=False))
        return ax

Création des axes de texte

Dans cette étape, nous allons créer un axe dans fig qui contient'matplotlib' sous forme de texte.

def create_text_axes(fig, height_px):
    """Crée un Axe dans *fig* qui contient'matplotlib' sous forme de Texte."""
    ax = fig.add_axes((0, 0, 1, 1))
    ax.set_aspect("égal")
    ax.set_axis_off()

    path = TextPath((0, 0), "matplotlib", size=height_px * 0.8,
                    prop=get_font_properties())

    angle = 4.25  ## degrés
    trans = mtrans.Affine2D().skew_deg(angle, 0)

    patch = PathPatch(path, transform=trans + ax.transData, color=MPL_BLUE,
                      lw=0)
    ax.add_patch(patch)
    ax.autoscale()

Dans cette étape, nous allons créer la figure complète avec le logo de Matplotlib.

def make_logo(height_px, lw_bars, lw_grid, lw_border, rgrid, with_text=False):
    """
    Crée une figure complète avec le logo de Matplotlib.

    Paramètres
    ----------
    height_px : int
        Hauteur de la figure en pixels.
    lw_bars : float
        Largeur de ligne de la bordure des barres.
    lw_grid : float
        Largeur de ligne de la grille.
    lw_border : float
        Largeur de ligne de la bordure de l'icône.
    rgrid : séquence de float
        Positions de la grille radiale.
    with_text : bool
        Indique s'il faut seulement dessiner l'icône ou inclure'matplotlib' sous forme de texte.
    """
    dpi = 100
    height = height_px / dpi
    figsize = (5 * height, height) si with_text sinon (height, height)
    fig = plt.figure(figsize=figsize, dpi=dpi)
    fig.patch.set_alpha(0)

    if with_text:
        create_text_axes(fig, height_px)
    ax_pos = (0.535, 0.12,.17, 0.75) si with_text sinon (0.03, 0.03,.94,.94)
    ax = create_icon_axes(fig, ax_pos, lw_bars, lw_grid, lw_border, rgrid)

    return fig, ax

Affichage des logos

Dans cette étape, nous allons afficher les logos de Matplotlib de différentes tailles.

## Un grand logo :
make_logo(height_px=110, lw_bars=0.7, lw_grid=0.5, lw_border=1,
          rgrid=[1, 3, 5, 7])

## Un petit logo de 32px :
make_logo(height_px=32, lw_bars=0.3, lw_grid=0.3, lw_border=0.3, rgrid=[5])

## Un grand logo incluant le texte, tel que utilisé sur le site web de Matplotlib.
make_logo(height_px=110, lw_bars=0.7, lw_grid=0.5, lw_border=1,
          rgrid=[1, 3, 5, 7], with_text=True)
plt.show()

Sommaire

Dans ce laboratoire, vous avez appris à créer le logo de Matplotlib à l'aide de Python. En suivant les étapes ci-dessus, vous pouvez personnaliser le logo pour répondre à vos besoins et préférences.