[PYTHON] Utilisez xticks () pour pyplot et set_xticklabels () pour Axes.

(matplotlib ver3.2.0)

Si vous souhaitez modifier la chaîne de caractères d'échelle du graphique dessiné par matplotlib, utilisez-la correctement comme le titre l'indique. Je l'ai résumé parce que c'est un peu bizarre à utiliser.

Syntaxe de base

#pyplot.xticks prend la valeur des coordonnées de l'échelle comme premier argument et la chaîne de caractères de remplacement comme deuxième argument.
plt.xticks([1, 2, 3, 4, 5], [ "A", "B", "C", "D", "E"])

#axes.set_xticklabels spécifie uniquement la chaîne de remplacement
axes.set_xticklabels(["A", "B", "C", "D", "E"])

De même, pyplot.yticks () est remplacé par axes.set_yticklabels ().

Points à noter sur axes.set_xticklabels

Dans axes.set_xticklabels (), il est nécessaire de spécifier la chaîne de caractères entière pour l'échelle en séquence, donc s'il y a beaucoup d'échelles, c'est gênant lorsque vous ne voulez changer que certaines des échelles.

Par exemple, si vous tracez comme suit, des échelles fines seront ajoutées et il peut être très difficile de définir toutes les chaînes de caractères.

fig, ax = plt.subplots()
ax.plot([1,2,3,4,5] , [3,4,5,6,7])

Même si vous spécifiez comme suit dans cet état, les caractères spécifiés seront placés aux positions de 0,5 à 2,5 comme indiqué dans le graphique ci-dessous.

ax.set_xticklabels(["A", "B", "C", "D", "E"])

Si vous faites de votre mieux pour le configurer, vous pouvez écrire comme suit.

ax.set_xticklabels(["", "A", "", "B", "", "C", "", "D", "", "E"])

La méthode qui semble pouvoir simplifier un peu le réglage est résumée dans la section suivante par essais et erreurs.

Comment simplifier le paramétrage des axes.set_xticklabels

Limiter la notation d'échelle à l'avance

Utilisez axes.set_xticks () pour limiter les coordonnées à celles que vous souhaitez remplacer par des chaînes, puis remplacez-les.

ax.set_xticks([1,2,3,4,5]) 
ax.set_xticklabels(["A", "B", "C", "D", "E"])

Remplacer en utilisant axes.get_xticklabels ()

Puisque vous pouvez obtenir l'échelle actuelle avec axes.get_xticklabels (), remplacez uniquement les parties nécessaires par une nouvelle chaîne de caractères basée sur celle-ci.

Notez que axes.get_xticklabels () est un objet Text, donc une certaine ingéniosité est requise. Vous pouvez accéder à la coche elle-même comme suit:

for item in ax.get_xticklabels():
    print(item.get_text())

#Résultat de sortie
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0
5.5

Dans ce qui précède, remplacez la chaîne de caractères d'échelle en écrivant comme suit.

fig, ax = plt.subplots()
ax.plot([1,2,3,4,5] , [3,4,5,6,7])
fig.canvas.draw() #Appelez pour déterminer la valeur des coordonnées, etc.
                  #Obtenez sans appeler ça_xticklabels()Je ne peux pas obtenir la chaîne de caractères même si je lis
                  #Au fait, intrigue.show()Si tel est le cas, l'intrigue sera corrigée, donc inutile.

d = {1:"A", 2:"B", 3:"C", 4:"D", 5:"E"} #Définissez les coordonnées et la chaîne de caractères à remplacer dans le dictionnaire

#Remplacer la position des coordonnées enregistrées dans le dictionnaire
#Laissez les autres positions vides
#(Ceci est un petit texte. Vous devez le réécrire en fonction du contexte que vous voulez faire.)
l = []
for item in ax.get_xticklabels():
    k = float(item.get_text()) 
    if k in d:
        l.append(d[k])
    else:
        l.append("")
ax.set_xticklabels(l)

plt.show()

En passant, avec cette méthode, vous pouvez laisser les lignes d'échelle mineures sans les effacer. Eh bien, il est préférable de simplifier les paramètres dans axes.set_xticklabels ci-dessus.

Recommended Posts

Utilisez xticks () pour pyplot et set_xticklabels () pour Axes.
Paramètres japonais pour les axes matplotlib et Seaborn
Installez tweepy avec pip et utilisez-le pour l'API 1.1
Utilisez SQL Alchemy et le multitraitement