Cet article suppose ʻimport matplotlib.pyplot as plt et
fig = plt.figure () `.
Pour obtenir l'étiquette d'échelle de la sortie de la figure en Python
--Plt.draw () pour confirmer le chiffre --locs, labs = Obtenir des échelles avec plt.xticks () --_ labs = [lab.get_text () for lab in labs] pour obtenir la chaîne de caractères de l'étiquette de l'échelle
La procédure est obligatoire. Vous pouvez également l'éditer en réécrivant directement les éléments des labs (exemple: labs [0] .set_va ('top')). Cette dernière méthode peut être plus pratique car elle permet de modifier d'autres que des chaînes de caractères.
~ Explication ci-dessous ~
Même si vous obtenez la sortie d'échelle par Python par défaut, les informations d'étiquette peuvent ne pas être incluses. Par exemple
plt.plot( [ 5, 7, 6 ] )
Lorsque vous exécutez, la figure ci-dessous s'affiche,
Même si vous obtenez cette échelle, les informations sur l'étiquette sont ''
. Notez que la deuxième valeur de retour de plt.xticks ()
n'est pas une chaîne de caractères, mais une liste d'objets matplotlib.text.Text
, donc la chaîne de caractères est acquise par la méthode .get_text ()
. :
xlocs, xlabs = plt.xticks()
print( xlocs ) # [-0.5 0. 0.5 1. 1.5 2. 2.5 3. 3.5]
print( [ xlab.get_text() for xlab in xlabs ] ) # ['', '', '', '', '', '', '', '', '']
ylocs, ylabs = plt.xticks()
print( ylocs ) # [4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5]
print( [ ylab.get_text() for ylab in ylabs ] ) # ['', '', '', '', '', '', '', '', '']
De plus, des échelles supplémentaires (-0,5 sur l'axe horizontal, etc.) sont incluses en haut, en bas, à gauche et à droite de l'échelle de la figure actuellement sortie. C'est parce que le côté Python est dans un état où "l'échelle est actuellement indécise et sera ajustée de manière appropriée en fonction de l'édition supplémentaire". stackoverflow: Getting empty tick labels before showing a plot in Matplotlib
Par conséquent, exécutez «plt.draw ()» ou «fig.canvas.draw ()» pour confirmer une fois le chiffre. Ensuite, la chaîne de caractères de l'échelle est également fixe, de sorte que vous pouvez obtenir la chaîne de caractères affichée dans la figure (bien que la figure affichée ne change pas).
plt.plot( [ 5, 7, 6, 8 ] )
plt.draw()
xlocs, xlabs = plt.xticks()
print( xlocs ) # [-0.5 0. 0.5 1. 1.5 2. 2.5 3. 3.5]
print( [ xlab.get_text() for xlab in xlabs ] ) # ['−0.5', '0.0', '0.5', '1.0', '1.5', '2.0', '2.5', '3.0', '3.5']
ylocs, ylabs = plt.yticks()
print( ylocs ) # [4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5]
print( [ ylab.get_text() for ylab in ylabs ] )
# ['4.5', '5.0', '5.5', '6.0', '6.5', '7.0', '7.5', '8.0', '8.5']
Même à ce stade, des échelles supplémentaires en haut, en bas, à gauche et à droite sont incluses, donc si vous refaites plt.xticks (xlocs, xlabs)
sans modification, les échelles supplémentaires seront affichées et les marges de la figure deviendront grandes. Masu:
plt.xticks( xlocs, xlabs )
plt.yticks( ylocs, ylabs )
Par conséquent, si vous ne voulez pas changer la plage de la figure, spécifiez la plage de la figure avec xlim ()
, ylim ()
, ou coupez la liste des échelles selon le cas (exemple: xlocs [1: -1]
) doivent le faire.
xmin, xmax = plt.xlim()
ymin, ymax = plt.ylim()
plt.xticks( xlocs, xlabs )
plt.yticks( ylocs, ylabs )
plt.xlim( xmin, xmax )
plt.ylim( ymin, ymax )
# === OR ===
plt.xticks( xlocs[1:-1], xlabs[1:-1] )
plt.yticks( ylocs[1:-1], ylabs[1:-1] )
Dans ce qui précède, la chaîne de caractères de l'étiquette d'échelle a été une fois obtenue, mais en accédant directement à la classe matplotlib.text.Text obtenue par plt.xticks ()
, ** modifiez l'apparence de l'échelle un par un **. Je peux.
Pour le modifier, utilisez la liste de méthodes (set_ *
) sur la page inférieure. Par exemple
officiel matplotlib: matplotlib.text.Text
xlocs, xlabs = plt.xticks()
xlabs[3].set_color( 'red' )
xlabs[5].set_va( 'center' )
Ensuite, certaines couleurs et hauteurs de l'axe horizontal sont modifiées.
Vous pouvez également en profiter pour décaler les étiquettes lorsque les étiquettes de graduation deviennent trop longues: stackoverflow: Aligning rotated xticklabels with their respective xticks
Recommended Posts