Matplotlib - Déplacer l'étiquette de l'axe X vers le bas, mais pas les graduations de l'axe X

109

J'utilise Matplotlib pour tracer un histogramme. En utilisant les conseils de ma question précédente: Matplotlib - étiquetez chaque bac , j'ai plus ou moins réglé les problèmes.

Il y a un dernier problème - auparavant - l'étiquette de l'axe des x ("Temps (en millisecondes)") était rendue sous les graduations de l'axe des x (0,00, 0,04, 0,08, 0,12, etc.)

Pas de rembourrage - étiquette de l'axe sous les chiffres

En utilisant les conseils de Joe Kingston (voir question ci-dessus), j'ai essayé d'utiliser:

ax.tick_params(axis='x', pad=30)

Cependant, cela déplace à la fois les graduations de l'axe des x (0,00, 0,04, 0,08, 0,12 etc.), ainsi que l'étiquette de l'axe des x ("Temps (en millisecondes)"):

30 Padding - L'étiquette d'axe et les marques de graduation ont été déplacées

Existe-t-il un moyen de déplacer uniquement l'étiquette de l'axe des x sous les trois rangées de chiffres?

Nb: Vous devrez peut-être ouvrir directement les PNG ci-dessous - Faites un clic droit sur l'image, puis Afficher l'image (en FF), ou Ouvrir l'image dans un nouvel onglet (Chrome). Le redimensionnement de l'image effectué par SO les a rendus presque illisibles

Victorhooi
la source

Réponses:

196

utiliser le paramètre labelpad:

pl.xlabel("...", labelpad=20)

ou réglez-le après:

ax.xaxis.labelpad = 20
HYRY
la source
13

Si la variable ax.xaxis._autolabelpos = True, matplotlib définit la position de l'étiquette dans la fonction _update_label_position dans axis.py selon (quelques extraits):

    bboxes, bboxes2 = self._get_tick_bboxes(ticks_to_draw, renderer)
    bbox = mtransforms.Bbox.union(bboxes)
    bottom = bbox.y0
    x, y = self.label.get_position()
    self.label.set_position((x, bottom - self.labelpad * self.figure.dpi / 72.0))

Vous pouvez définir la position de l'étiquette indépendamment des graduations en utilisant:

    ax.xaxis.set_label_coords(x0, y0)

qui définit _autolabelpos sur False ou comme mentionné ci-dessus en modifiant le paramètre labelpad.

Matthias123
la source