web-dev-qa-db-ja.com

Matplotlib-X軸ラベルを下に移動するが、X軸の目盛りは移動しない

Matplotlibを使用してヒストグラムをプロットしています。以前の質問からのヒントを使用して: Matplotlib-各ビンにラベルを付ける 、多かれ少なかれねじれが解決した。

最後の問題が1つあります-以前-x軸のラベル(「時間(ミリ秒)」)はx軸の目盛り(0.00、0.04、0.08、0.12など)の下にレンダリングされていました。

No padding - Axis label underneath figures

Joe Kingstonからのアドバイス(上記の質問を参照)を使用して、以下を使用してみました。

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軸ラベルのみを3行の図の下に移動する方法はありますか?

Nb:下のPNGを直接開く必要がある場合があります。画像を右クリックし、画像を表示(FF)、または新しいタブで画像を開く(Chrome)。 SOによって行われた画像のサイズ変更により、それらは読めなくなりました

92
victorhooi

labelpadパラメーターを使用します。

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

または後に設定します:

ax.xaxis.labelpad = 20
167
HYRY

変数ax.xaxis._autolabelpos = Trueの場合、matplotlibは(一部の抜粋)に従ってaxis.pyの関数_update_label_positionのラベル位置を設定します。

    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に設定するか、前述のようにlabelpadパラメーターを変更します。

11
Matthias123