python 在matplotlib中向下移动X轴标签,但不移动X轴刻度

jum4pzuy  于 2023-04-19  发布在  Python
关注(0)|答案(3)|浏览(169)

我正在使用Matplotlib绘制直方图。使用我上一个问题中的提示:Matplotlib - label each bin,我已经或多或少得到了扭结工作了。
还有一个最后的问题-以前-x轴标签(“时间(毫秒)”)被渲染在x轴刻度线(0.00,0.04,0.08,0.12等)下面。

根据Joe金斯顿的建议(见上面的问题),我尝试使用:

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

但是,这会移动x轴刻度线(0.00、0.04、0.08、0.12等)以及x轴标签(“时间(毫秒)”):

有没有办法只把x轴的标签移到三行图形的下面?

  • 注意:您可能需要直接打开下面的PNG-右键单击图像,然后查看图像(FF),或在新标签页中打开图像(Chrome)。SO完成的图像调整使它们几乎无法阅读 *
62o28rlo

62o28rlo1#

使用labelpad参数:

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

或将其设置为:

ax.xaxis.labelpad = 20
laawzig2

laawzig22#

如果变量ax.xaxis._autolabelpos = True,则matplotlib根据以下公式在www.example.com中设置function _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或如上所述通过更改labelpad参数。

bvjxkvbb

bvjxkvbb3#

不要手动填充,而是尝试指定垂直对齐(va=):

ax.set_xlabel("x label", va='top');

如果你像@HYRY的回答中那样手动修改标签填充,有时当你保存图形时标签会被裁剪掉。要包含标签,请在调用savefig()时设置bbox_inches='tight'。例如:

plt.plot(range(10))
plt.xlabel("x label", labelpad=30);
plt.savefig('img.png', bbox_inches='tight');

使用OOP API,同样是:

fig, ax = plt.subplots()
ax.plot(range(10))
ax.set_xlabel("x label", labelpad=30);
fig.savefig('img.png', bbox_inches='tight');

相关问题