Matplotlib在绘图区域内移动刻度标签

时间:2017-12-18 17:19:29

标签: python matplotlib

是否可以在绘图区域内放置刻度标签?我已经尝试过了:

ax.tick_params(axis="y",pad=-.5, left="off",labelleft="on")

ax.tick_params(axis="y",direction="in", left="off",labelleft="on")

前者只是将轴向内移动,而后者只移动刻度而不是刻度标签。

2 个答案:

答案 0 :(得分:9)

我猜你完全走在正确的轨道上。问题只是找到填充的好参数,以便在轴内有标签。填充以点为单位进行测量,因此使用大于0.5的数字是有意义的。由于文本的对齐,x和y轴的填充也不同。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.tick_params(axis="y",direction="in", pad=-22)
ax.tick_params(axis="x",direction="in", pad=-15)

plt.show()

enter image description here

答案 1 :(得分:3)

更新

我完全忘记了pad中的tick_params param。 @ImportanceOfBeingErnest’s answer使用此功能,更适合所提出的问题。

尽管如此,我将在此留下我的答案,作为如果通过thick_params等一般方法无法实现相同目标的示例。

我不知道实现这一目标的官方方法。但你可以硬编码它。

如果你想只在里面打勾,你只需要运行:

ax.tick_params(direction="in")

现在,要在绘图区域内移动标签,您需要在刻度线中添加填充,如下所示:

TICK_PADDING = -10

xticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()]
yticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()]

for tick in (*xticks, *yticks):
        tick.set_pad(TICK_PADDING)

您可能必须对x和y刻度使用不同的填充。在这种情况下你应该:

X_TICK_PADDING = -10
Y_TICK_PADDING = -20

xticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()]
yticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()]

for tick in xticks:
    tick.set_pad(X_TICK_PADDING)

for tick in yticks:
    tick.set_pad(Y_TICK_PADDING)

它不漂亮但它有效。 如果这是你想要的,请告诉我。