Déplacer les étiquettes de graduation de l'axe des x en haut

Beginner

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

Introduction

Dans ce tutoriel, nous allons apprendre à déplacer les étiquettes des graduations de l'axe des x en haut du graphique en utilisant la bibliothèque Matplotlib de Python. Par défaut, Matplotlib place les étiquettes de l'axe des x en bas du graphique. Cependant, il peut arriver que nous voulions les placer en haut pour une meilleure visualisation, notamment lorsque nous traitons des graphiques encombrés ou des étiquettes longues qui risqueraient de chevaucher d'autres éléments.

Cette technique est particulièrement utile dans les scénarios de visualisation de données où vous avez besoin d'optimiser l'utilisation de l'espace et d'améliorer la lisibilité de vos graphiques. Nous allons créer un graphique simple et apprendre à manipuler la position des étiquettes des graduations étape par étape.

Conseils pour la machine virtuelle (VM)

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

click-notebook

Vous devrez peut-être attendre quelques secondes que Jupyter Notebook ait terminé de charger. En raison des limitations de Jupyter Notebook, la validation des opérations ne peut pas être automatisée.

Si vous rencontrez des problèmes lors de ce tutoriel, n'hésitez pas à demander de l'aide à Labby. Veuillez nous faire part de vos commentaires après la session afin que nous puissions résoudre rapidement tout problème.

Comprendre Matplotlib et créer un notebook

Dans cette première étape, nous allons apprendre à connaître Matplotlib et créer un nouveau notebook Jupyter pour notre tâche de visualisation.

Qu'est-ce que Matplotlib ?

Matplotlib est une bibliothèque complète pour créer des visualisations statiques, animées et interactives en Python. Elle fournit une API orientée objet pour intégrer des graphiques dans des applications et est largement utilisée pour la visualisation de données par les scientifiques, les ingénieurs et les analystes de données.

Créer un nouveau notebook

Dans la première cellule de votre notebook, importons la bibliothèque Matplotlib. Tapez le code suivant et exécutez la cellule en appuyant sur Shift+Enter :

import matplotlib.pyplot as plt
import numpy as np

## Check the Matplotlib version
print(f"NumPy version: {np.__version__}")

libraries-imported

Lorsque vous exécutez ce code, vous devriez voir une sortie similaire à :

NumPy version: 2.0.0

Le numéro de version exact peut varier en fonction de votre environnement.

Maintenant, nous avons importé Matplotlib et il est prêt à être utilisé. plt est un alias conventionnel utilisé pour le module pyplot, qui fournit une interface similaire à MATLAB pour créer des graphiques.

Créer un graphique de base avec les paramètres par défaut

Maintenant que nous avons importé Matplotlib, créons un graphique simple avec les paramètres par défaut pour comprendre comment les axes et les étiquettes de graduation sont positionnés par défaut.

Comprendre les composants de Matplotlib

Dans Matplotlib, les graphiques sont composés de plusieurs éléments :

  • Figure : Le conteneur global du graphique
  • Axes : La zone où les données sont tracées avec son propre système de coordonnées
  • Axis : Les objets ressemblant à des axes de nombres qui définissent le système de coordonnées
  • Ticks : Les marques sur les axes qui indiquent des valeurs spécifiques
  • Tick Labels : Les étiquettes de texte qui indiquent la valeur de chaque graduation

Par défaut, les étiquettes de graduation de l'axe des x apparaissent en bas du graphique.

Créer un graphique simple

Dans une nouvelle cellule de votre notebook, créons un simple graphique linéaire :

## Create a figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.sin(x)

## Plot the data
ax.plot(x, y, marker='o', linestyle='-', color='blue', label='sin(x)')

## Add a title and labels
ax.set_title('A Simple Sine Wave Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis (sin(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Notice that the x-axis tick labels are at the bottom of the plot by default.")

Lorsque vous exécutez ce code, vous verrez un graphique d'onde sinusoïdale avec les étiquettes de graduation de l'axe des x en bas du graphique, qui est la position par défaut dans Matplotlib.

Prenez un moment pour observer la structure du graphique et la position des étiquettes de graduation. Cette compréhension nous aidera à apprécier les modifications que nous allons apporter à l'étape suivante.

Déplacer les étiquettes de graduation de l'axe des x en haut

Maintenant que nous comprenons le positionnement par défaut des étiquettes de graduation, déplaçons les étiquettes de graduation de l'axe des x en haut du graphique.

Comprendre les paramètres des graduations

Matplotlib fournit la méthode tick_params() pour contrôler l'apparence des graduations et des étiquettes de graduation. Cette méthode nous permet de :

  • Afficher/cacher les graduations et les étiquettes de graduation
  • Changer leur position (haut, bas, gauche, droite)
  • Ajuster leur taille, leur couleur et d'autres propriétés

Créer un graphique avec les étiquettes de graduation de l'axe des x en haut

Créons un nouveau graphique avec les étiquettes de graduation de l'axe des x déplacées en haut :

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.cos(x)

## Plot the data
ax.plot(x, y, marker='s', linestyle='-', color='green', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',         ## Apply changes to the x-axis
    top=True,         ## Show ticks on the top side
    labeltop=True,    ## Show tick labels on the top side
    bottom=False,     ## Hide ticks on the bottom side
    labelbottom=False ## Hide tick labels on the bottom side
)

## Add a title and labels
ax.set_title('Cosine Wave with X-Axis Tick Labels at the Top')
ax.set_xlabel('X-axis (now at the top!)')
ax.set_ylabel('Y-axis (cos(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Now the x-axis tick labels are at the top of the plot!")

Lorsque vous exécutez ce code, vous verrez un graphique d'onde cosinus avec les étiquettes de graduation de l'axe des x en haut du graphique.

Remarquez comment la méthode tick_params() est utilisée avec plusieurs paramètres :

  • axis='x' : Spécifie que nous voulons modifier l'axe des x
  • top=True et labeltop=True : Rend les graduations et les étiquettes visibles en haut
  • bottom=False et labelbottom=False : Masque les graduations et les étiquettes en bas

Cela nous donne une vue claire des données avec les étiquettes de l'axe des x positionnées en haut plutôt qu'en bas.

Personnaliser davantage le graphique

Maintenant que nous avons déplacé les étiquettes de graduation de l'axe des x en haut, personnalisons davantage notre graphique pour le rendre plus attrayant visuellement et plus informatif.

Techniques avancées de personnalisation de graphiques

Matplotlib offre de nombreuses options pour personnaliser les graphiques. Explorons quelques-unes de ces options :

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(10, 6))

## Generate some data with more points for a smoother curve
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot multiple datasets
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Fill the area between curves
ax.fill_between(x, y1, y2, where=(y1 > y2), alpha=0.3, color='green', interpolate=True)
ax.fill_between(x, y1, y2, where=(y1 <= y2), alpha=0.3, color='purple', interpolate=True)

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels with custom styles
ax.set_title('Sine and Cosine Functions with Customized X-Axis Labels at the Top',
             fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Angle (radians)', fontsize=12)
ax.set_ylabel('Function Value', fontsize=12)

## Add a grid and customize its appearance
ax.grid(True, linestyle='--', alpha=0.7, which='both')

## Customize the axis limits
ax.set_ylim(-1.2, 1.2)

## Add a legend with custom location and style
ax.legend(loc='upper right', fontsize=12, framealpha=0.8)

## Add annotations to highlight important points
ax.annotate('Maximum', xy=(np.pi/2, 1), xytext=(np.pi/2, 1.1),
            arrowprops=dict(facecolor='black', shrink=0.05, width=1.5),
            fontsize=10, ha='center')

## Display the plot
plt.tight_layout()  ## Adjust spacing for better appearance
plt.show()

print("We have created a fully customized plot with x-axis tick labels at the top!")

Lorsque vous exécutez ce code, vous verrez un graphique beaucoup plus élaboré et professionnel avec :

  • Deux courbes (sinus et cosinus)
  • Des régions colorées entre les courbes
  • Des étiquettes de graduation personnalisées (utilisant la notation π)
  • Des annotations pointant vers les éléments clés
  • Un meilleur espacement et un meilleur style

Remarquez comment nous avons maintenu les étiquettes de graduation de l'axe des x en haut en utilisant la méthode tick_params() tout en améliorant le graphique avec des personnalisations supplémentaires.

Comprendre les personnalisations

Décortiquons quelques-unes des personnalisations clés que nous avons ajoutées :

  1. fill_between() : Crée des régions colorées entre les courbes de sinus et de cosinus
  2. set_xticks() et set_xticklabels() : Personnalisent les positions et les étiquettes des graduations
  3. tight_layout() : Ajuste automatiquement l'espacement du graphique pour un meilleur aspect
  4. annotate() : Ajoute du texte avec une flèche pointant vers un point spécifique
  5. Des polices, des couleurs et des styles personnalisés pour divers éléments

Ces personnalisations montrent comment vous pouvez créer des graphiques visuellement attrayants et informatifs tout en gardant les étiquettes de graduation de l'axe des x en haut.

Enregistrer et partager votre graphique

La dernière étape consiste à enregistrer votre graphique personnalisé afin de le inclure dans des rapports, des présentations ou de le partager avec d'autres personnes.

Enregistrer des graphiques dans différents formats

Matplotlib vous permet d'enregistrer des graphiques dans divers formats, notamment PNG, JPG, PDF, SVG, etc. Apprenons à enregistrer notre graphique dans différents formats :

## Create a plot similar to our previous customized one
fig, ax = plt.subplots(figsize=(10, 6))

## Generate data
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot the data
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels
ax.set_title('Plot with X-Axis Labels at the Top', fontsize=14)
ax.set_xlabel('X-axis at the top')
ax.set_ylabel('Y-axis')

## Add grid and legend
ax.grid(True)
ax.legend()

## Save the figure in different formats
plt.savefig('plot_with_top_xlabels.png', dpi=300, bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.pdf', bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.svg', bbox_inches='tight')

## Show the plot
plt.show()

print("The plot has been saved in PNG, PDF, and SVG formats in the current directory.")

Lorsque vous exécutez ce code, le graphique sera enregistré dans trois formats différents :

  • PNG : Un format d'image raster adapté pour le web et l'utilisation générale
  • PDF : Un format vectoriel idéal pour les publications et les rapports
  • SVG : Un format vectoriel excellent pour le web et les graphiques éditables

Les fichiers seront enregistrés dans le répertoire de travail actuel de votre notebook Jupyter.

Comprendre les paramètres d'enregistrement

Examinons les paramètres utilisés avec savefig() :

  • dpi=300 : Définit la résolution (points par pouce) pour les formats raster comme le PNG
  • bbox_inches='tight' : Ajuste automatiquement les limites de la figure pour inclure tous les éléments sans espace blanc inutile

Visualiser les fichiers enregistrés

Vous pouvez visualiser les fichiers enregistrés en accédant au navigateur de fichiers de Jupyter :

  1. Cliquez sur le logo "Jupyter" en haut à gauche
  2. Dans le navigateur de fichiers, vous devriez voir les fichiers d'image enregistrés
  3. Cliquez sur n'importe quel fichier pour le visualiser ou le télécharger

Options d'exportation supplémentaires pour les graphiques

Pour avoir plus de contrôle sur le graphique enregistré, vous pouvez personnaliser la taille de la figure, ajuster le fond ou modifier la résolution (DPI) selon vos besoins :

## Control the background color and transparency
fig.patch.set_facecolor('white')  ## Set figure background color
fig.patch.set_alpha(0.8)          ## Set background transparency

## Save with custom settings
plt.savefig('custom_background_plot.png',
            dpi=400,              ## Higher resolution
            facecolor=fig.get_facecolor(),  ## Use the figure's background color
            edgecolor='none',     ## No edge color
            bbox_inches='tight',  ## Tight layout
            pad_inches=0.1)       ## Add a small padding

print("A customized plot has been saved with specialized export settings.")

Cela montre comment enregistrer des graphiques avec un contrôle précis sur le format de sortie et l'apparence.

Résumé

Dans ce tutoriel, nous avons appris à déplacer les étiquettes de graduation de l'axe des x de leur position par défaut en bas du graphique vers le haut, en utilisant Matplotlib. Cette technique peut être utile lorsque vous travaillez avec des graphiques ayant de longues étiquettes ou lorsque vous avez besoin d'optimiser l'utilisation de l'espace.

Nous avons couvert les points clés suivants :

  1. Comprendre les bases de Matplotlib et ses composants, notamment les figures, les axes et les étiquettes de graduation
  2. Créer des graphiques simples avec les paramètres par défaut pour observer le placement standard des étiquettes de graduation de l'axe des x
  3. Utiliser la méthode tick_params() pour déplacer les étiquettes de graduation de l'axe des x en haut du graphique
  4. Améliorer le graphique avec des personnalisations supplémentaires pour le rendre plus informatif et visuellement attrayant
  5. Enregistrer les graphiques dans différents formats pour les partager et les publier

Ces connaissances vous permettent de créer des visualisations plus lisibles et professionnelles, en particulier lorsque vous travaillez avec des ensembles de données complexes ou avec des graphiques ayant des exigences de mise en page spécifiques.

Pour approfondir vos connaissances, vous pouvez explorer d'autres options de personnalisation de Matplotlib, telles que :

  • Créer des sous-graphiques avec différentes positions d'étiquettes de graduation
  • Personnaliser l'apparence des graduations et des étiquettes de graduation (couleur, police, taille, etc.)
  • Travailler avec différents types de graphiques comme les diagrammes en barres, les nuages de points ou les histogrammes avec des positions de graduation personnalisées

La flexibilité de Matplotlib permet une personnalisation approfondie pour répondre à vos besoins de visualisation spécifiques.