135

我正在使用 Matplotlib 绘制直方图。使用我之前的问题中的提示:Matplotlib - label each bin,我或多或少地解决了问题。

最后一个问题 - 之前 - x 轴标签(“时间(以毫秒为单位)”)正在 x 轴刻度线(0.00、0.04、0.08、0.12 等)下方呈现

无填充 - 数字下方的轴标签

使用 Joe Kingston 的建议(见上面的问题),我尝试使用:

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

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

30 填充 - 轴标签和刻度线都已移动

有没有办法只将 x 轴标签移动到三行数字下方?

注意:您可能需要直接打开下面的 PNG - 右键单击​​图像,然后查看图像(在 FF 中),或在新选项卡中打开图像(Chrome)。SO 完成的图像大小调整使它们几乎不可读

4

2 回答 2

238

使用 labelpad 参数:

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

或设置后:

ax.xaxis.labelpad = 20
于 2011-06-20T04:13:36.893 回答
13

如果变量 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 参数。

于 2014-07-29T14:57:09.527 回答