Matplotlib - Переместите метку X-Axis вниз, но не X-Axis Ticks

Я использую Matplotlib для построения гистограммы. Используя советы по моему предыдущему вопросу: Matplotlib - пометьте каждый бит, Я более или менее ухожу из перегибов.

Там одна конечная проблема - ранее - метка оси x ( "Время (в миллисекундах)" ) отображается под отметками оси x (0,00, 0,04, 0,08, 0,12 и т.д.).

No padding - Axis label underneath figures

Используя совет Джо Кингстона (см. вопрос выше), я попытался использовать:

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

Однако это перемещает как отметки оси x (0.00, 0.04, 0.08, 0.12 и т.д.), так и метку оси x ( "Время (в миллисекундах)" ):

30 Padding - Both Axis Label and Tick Marks have Moved

Есть ли способ переместить только метку оси X под три строки цифр?

Nb: Возможно, вам нужно будет открыть PNG ниже непосредственно - Щелкните правой кнопкой мыши по изображению, затем выберите изображение (в формате FF) или откройте изображение на новой вкладке (Chrome). Изменение размера изображения, сделанное с помощью SO, показало их почти нечитаемым

Ответ 1

используйте параметр метки:

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

или установите его после:

ax.xaxis.labelpad = 20

Ответ 2

Если переменная ax.xaxis._autolabelpos = True, matplotlib устанавливает положение метки в функции _update_label_position в axis.py в соответствии с (некоторые выдержки):

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

Вы можете установить положение метки независимо от тиков, используя:

    ax.xaxis.set_label_coords(x0, y0)

который устанавливает _autolabelpos в False или как упоминалось выше, изменяя параметр метки.