Introduction
Dans ce laboratoire, nous allons apprendre à centrer les étiquettes entre les graduations dans un graphique Matplotlib à l'aide de Python. Par défaut, les étiquettes des graduations sont alignées par rapport à la graduation associée, mais il n'y a pas de manière directe de centrer les étiquettes entre les graduations. Cependant, nous pouvons placer une étiquette sur les graduations mineures situées entre les graduations majeures et masquer les étiquettes des graduations majeures et les graduations mineures pour simuler ce comportement. Nous utiliserons des données financières sur le prix d'actions de Google pour démontrer cette technique.
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 Carnet de notes pour accéder au carnet Jupyter Notebook pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter Notebook.
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.
Charger les données financières
Tout d'abord, nous devons charger certaines données financières sur le prix d'actions de Google à l'aide de la fonction cbook.get_sample_data() de Matplotlib. Nous utiliserons les données des 250 derniers jours.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook
## Charger certaines données financières ; le prix d'actions de Google
r = cbook.get_sample_data('goog.npz')['price_data'].view(np.recarray)
r = r[-250:] ## obtenir les 250 derniers jours
Créer le graphique
Ensuite, nous allons créer le graphique à l'aide de la fonction subplots() de Matplotlib et tracer le prix de clôture ajusté des actions de Google en fonction du temps.
fig, ax = plt.subplots()
ax.plot(r.date, r.adj_close)
Configurer les localiseurs et les formatteurs principaux et secondaires
Pour centrer les étiquettes entre les graduations, nous devons configurer les localiseurs et les formatteurs principaux et secondaires pour l'axe x. Nous utiliserons la fonction dates.MonthLocator() pour définir les localiseurs principaux et secondaires sur le mois et la fonction dates.DateFormatter() pour formater les étiquettes des graduations secondaires en abréviation de mois.
import matplotlib.dates as dates
import matplotlib.ticker as ticker
ax.xaxis.set_major_locator(dates.MonthLocator())
## 16 est une légère approximation car les mois ont un nombre différent de jours.
ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=16))
ax.xaxis.set_major_formatter(ticker.NullFormatter())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%b'))
Supprimer les étiquettes des graduations majeures et les graduations mineures
Pour simuler le comportement de centrage des étiquettes entre les graduations, nous devons supprimer les étiquettes des graduations majeures et les graduations mineures et ne montrer que les étiquettes des graduations mineures. Nous pouvons le faire à l'aide de la fonction tick_params() et en définissant les paramètres tick1On et tick2On sur False.
## Supprimer les lignes de graduation
ax.tick_params(axis='x', which='minor', tick1On=False, tick2On=False)
Ajuster l'alignement des étiquettes des graduations mineures
Enfin, nous devons aligner les étiquettes des graduations mineures au centre entre les graduations majeures. Nous pouvons le faire à l'aide de la fonction get_xticklabels() et en définissant le paramètre minor sur True pour obtenir les étiquettes des graduations mineures. Nous pouvons ensuite parcourir les étiquettes et définir l'alignement horizontal sur 'center'.
## Ajuster l'alignement des étiquettes des graduations mineures
for label in ax.get_xticklabels(minor=True):
label.set_horizontalalignment('center')
imid = len(r) // 2
ax.set_xlabel(str(r.date[imid].item().year))
Afficher le graphique
Nous pouvons maintenant afficher le graphique à l'aide de la fonction show().
plt.show()
Récapitulatif
Dans ce laboratoire, nous avons appris à centrer les étiquettes entre les graduations dans un graphique Matplotlib à l'aide de Python. Nous avons utilisé des données financières sur le prix d'actions de Google pour démontrer cette technique et avons suivi les étapes suivantes :
- Chargé les données financières
- Créé le graphique
- Configuré les localiseurs et les formatteurs principaux et secondaires
- Supprimé les étiquettes des graduations majeures et les graduations mineures
- Ajusté l'alignement des étiquettes des graduations mineures au centre entre les graduations majeures
- Affiché le graphique.