Matplotlib - Bewegen Sie die X-Achsen-Beschriftung nach unten, nicht jedoch die X-Achsen-Häkchen

109

Ich verwende Matplotlib, um ein Histogramm zu zeichnen. Mit Tipps aus meiner vorherigen Frage: Matplotlib - beschriften Sie jeden Behälter , ich habe mehr oder weniger die Knicke geklappt.

Es gibt noch ein letztes Problem - zuvor wurde die Beschriftung der x-Achse ("Zeit (in Millisekunden)") unter den Häkchen der x-Achse (0,00, 0,04, 0,08, 0,12 usw.) gerendert.

Keine Polsterung - Achsenbeschriftung unter den Figuren

Mit dem Rat von Joe Kingston (siehe Frage oben) habe ich versucht:

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

Dadurch werden jedoch sowohl die Häkchen auf der x-Achse (0,00, 0,04, 0,08, 0,12 usw.) als auch die Beschriftung auf der x-Achse ("Zeit (in Millisekunden)") verschoben:

30 Polsterung - Sowohl die Achsenbeschriftung als auch die Häkchen wurden verschoben

Gibt es eine Möglichkeit, nur die Beschriftung der x-Achse unter die drei Zahlenreihen zu verschieben?

Nb: Möglicherweise müssen Sie die folgenden PNGs direkt öffnen. Klicken Sie mit der rechten Maustaste auf das Bild, dann auf Bild anzeigen (in FF) oder Bild in neuem Tab öffnen (Chrome). Die von SO vorgenommene Bildgrößenänderung hat sie nahezu unlesbar gemacht

victorhooi
quelle

Antworten:

196

Verwenden Sie den Labelpad-Parameter:

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

oder setzen Sie es nach:

ax.xaxis.labelpad = 20
HYRY
quelle
13

Wenn die Variable ax.xaxis._autolabelpos = True ist, setzt matplotlib die Beschriftungsposition in der Funktion _update_label_position in axis.py gemäß (einige Auszüge):

    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))

Sie können die Etikettenposition unabhängig von den Häkchen festlegen, indem Sie Folgendes verwenden:

    ax.xaxis.set_label_coords(x0, y0)

Dadurch wird _autolabelpos auf False oder wie oben erwähnt gesetzt, indem der Parameter labelpad geändert wird.

Matthias123
quelle