Pregunta Matplotlib - Mueve la etiqueta X-Axis hacia abajo, pero no las marcas X-Axis Ticks


Estoy usando Matplotlib para trazar un histograma. Usando consejos de mi pregunta anterior: Matplotlib - etiqueta cada contenedor, Tengo más o menos van los problemas.

Hay un problema final: anteriormente, la etiqueta del eje x ("Tiempo (en milisegundos)") se estaba procesando debajo de las marcas del eje x (0.00, 0.04, 0.08, 0.12, etc.)

No padding - Axis label underneath figures

Utilizando el consejo de Joe Kingston (ver la pregunta anterior), traté de usar:

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

Sin embargo, esto mueve las marcas de eje x (0.00, 0.04, 0.08, 0.12 etc.), así como la etiqueta del eje x ("Tiempo (en milisegundos)"):

30 Padding - Both Axis Label and Tick Marks have Moved

¿Hay alguna forma de mover solo la etiqueta del eje x a debajo de las tres filas de figuras?

Nb: es posible que deba abrir los PNG que se muestran a continuación directamente: haga clic con el botón derecho en la imagen, luego Ver imagen (en FF) o Abrir imagen en una pestaña nueva (Chrome). El cambio de tamaño de la imagen hecho por SO les ha hecho casi ilegibles


75
2018-06-20 02:36


origen


Respuestas:


use el parámetro etiqueta de etiqueta:

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

o configurarlo después:

ax.xaxis.labelpad = 20

130
2018-06-20 04:13



Si la variable ax.xaxis._autolabelpos = True, matplotlib establece la posición de la etiqueta en la función _update_label_position en axis.py de acuerdo con (algunos extractos):

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

Puede establecer la posición de la etiqueta independientemente de los ticks usando:

    ax.xaxis.set_label_coords(x0, y0)

que establece _autolabelpos en False o, como se mencionó anteriormente, cambiando el parámetro de la etiqueta.


10
2017-07-29 14:57