Introduction
Lorsque l'on travaille avec Matplotlib, il est courant de rencontrer un comportement inattendu des étiquettes d'échelle, comme trop d'étiquettes ou des étiquettes désordonnées. Cela est souvent causé par le fait de passer une liste de chaînes de caractères au lieu de nombres ou d'objets datetime, que Matplotlib traite comme des variables catégorielles par défaut. Ce laboratoire fournira des instructions étape par étape sur la manière de corriger le problème de trop d'étiquettes dans Matplotlib.
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 des commentaires après la session, et nous résoudrons rapidement le problème pour vous.
Vérifiez le type de données
La première étape consiste à vérifier le type de données des valeurs de l'axe x. Si c'est une liste de chaînes de caractères, il est probable que le comportement des étiquettes d'échelle soit inattendu. Pour corriger ceci, nous devons convertir les chaînes de caractères en types numériques. Voici un exemple :
import matplotlib.pyplot as plt
import numpy as np
## créez des données d'exemple
x = ['1', '5', '2', '3']
y = [1, 4, 2, 3]
## tracez les données avec des étiquettes d'échelle de type chaîne de caractères
fig, ax = plt.subplots()
ax.plot(x, y, 'd')
ax.set_xlabel('Categories')
plt.show()
Dans cet exemple, nous avons une liste de chaînes de caractères sur l'axe x. Lorsque nous traçons les données, les étiquettes d'échelle sont désordonnées et mal placées.
Convertissez les chaînes de caractères en types numériques
Pour corriger le comportement des étiquettes d'échelle, nous devons convertir les chaînes de caractères en types numériques. Voici un exemple :
import matplotlib.pyplot as plt
import numpy as np
## créez des données d'exemple
x = ['1', '5', '2', '3']
y = [1, 4, 2, 3]
## convertissez les chaînes de caractères en flottants
x = np.asarray(x, dtype='float')
## tracez les données avec des étiquettes d'échelle numériques
fig, ax = plt.subplots()
ax.plot(x, y, 'd')
ax.set_xlabel('Floats')
plt.show()
Dans cet exemple, nous convertissons les valeurs de chaîne de caractères en flottants à l'aide de np.asarray(). Lorsque nous traçons à nouveau les données, les étiquettes d'échelle sont comme attendu.
Gérer trop d'étiquettes d'échelle
Si l'axe x a de nombreux éléments, tous des chaînes de caractères, nous pouvons finir avec trop d'étiquettes d'échelle qui sont illisibles. Dans ce cas, nous devons convertir les chaînes de caractères en types numériques. Voici un exemple :
import matplotlib.pyplot as plt
import numpy as np
## créez des données d'exemple avec 100 éléments
x = [f'{xx}' for xx in np.arange(100)]
y = np.arange(100)
## tracez les données avec des étiquettes d'échelle de type chaîne de caractères
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('Categories')
plt.show()
Dans cet exemple, nous avons 100 valeurs de chaîne de caractères sur l'axe x, ce qui résulte en trop d'étiquettes d'échelle qui sont illisibles.
Pour corriger ceci, nous devons convertir les chaînes de caractères en flottants. Voici un exemple :
import matplotlib.pyplot as plt
import numpy as np
## créez des données d'exemple avec 100 éléments
x = [f'{xx}' for xx in np.arange(100)]
y = np.arange(100)
## convertissez les chaînes de caractères en flottants
x = np.asarray(x, float)
## tracez les données avec des étiquettes d'échelle numériques
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('Floats')
plt.show()
Dans cet exemple, nous convertissons les valeurs de chaîne de caractères en flottants à l'aide de np.asarray(). Lorsque nous traçons à nouveau les données, les étiquettes d'échelle sont comme attendu.
Gérer les étiquettes de date et d'heure
Lorsque l'on travaille avec des valeurs de date et d'heure sur l'axe x, il est important de convertir les chaînes de caractères en objets de date et d'heure pour obtenir les localisateurs et les formatteurs de date appropriés. Voici un exemple :
import matplotlib.pyplot as plt
import numpy as np
## créez des données d'exemple avec des chaînes de caractères de date et d'heure
x = ['2021-10-01', '2021-11-02', '2021-12-03', '2021-09-01']
y = [0, 2, 3, 1]
## convertissez les chaînes de caractères en datetime64
x = np.asarray(x, dtype='datetime64[s]')
## tracez les données avec des étiquettes d'échelle de date et d'heure
fig, ax = plt.subplots()
ax.plot(x, y, 'd')
ax.tick_params(axis='x', labelrotation=90)
plt.show()
Dans cet exemple, nous convertissons les valeurs de chaîne de caractères en datetime64 à l'aide de np.asarray(). Lorsque nous traçons à nouveau les données, les étiquettes d'échelle sont comme attendu.
Sommaire
En résumé, lorsqu'on travaille avec Matplotlib, il est important de vérifier le type de données des valeurs de l'axe x. Si ce sont des chaînes de caractères, nous devons les convertir en types numériques pour corriger un comportement inattendu des étiquettes d'échelle. Si il y a trop d'étiquettes d'échelle, nous devons également convertir les chaînes de caractères en types numériques. Lorsqu'on travaille avec des valeurs de date et d'heure, nous devons convertir les chaînes de caractères en objets de date et d'heure pour obtenir les localisateurs et les formatteurs de date appropriés.