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

Bet*_*Kok 9 python matplotlib

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

ax.tick_params(axis="y",pad=-.5, left="off",labelleft="on")
Run Code Online (Sandbox Code Playgroud)

ax.tick_params(axis="y",direction="in", left="off",labelleft="on")
Run Code Online (Sandbox Code Playgroud)

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

Imp*_*est 14

我猜你完全走在正确的轨道上.问题只是找到填充的好参数,以便在轴内有标签.填充以点为单位进行测量,因此使用大于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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 有没有办法让绘图考虑刻度标签的大小。例如,当我们增加它们的尺寸时,矩形会变得更小,就像标准化它一样。 (2认同)

tpv*_*los 6

更新

\n\n

我完全忘记了pad中的参数tick_params@ImportanceOfBeingErnest\xe2\x80\x99s 答案利用了这一点,并且更适合所提出的问题。

\n\n

尽管如此,我将在这里留下我的答案作为一个例子,说明如果不能通过像thick_params.

\n\n
\n\n

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

\n\n

如果你只想在内部有刻度,你只需要运行:

\n\n
ax.tick_params(direction="in")\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
TICK_PADDING = -10\n\nxticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()]\nyticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()]\n\nfor tick in (*xticks, *yticks):\n        tick.set_pad(TICK_PADDING)\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
X_TICK_PADDING = -10\nY_TICK_PADDING = -20\n\nxticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()]\nyticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()]\n\nfor tick in xticks:\n    tick.set_pad(X_TICK_PADDING)\n\nfor tick in yticks:\n    tick.set_pad(Y_TICK_PADDING)\n
Run Code Online (Sandbox Code Playgroud)\n\n

它不漂亮,但很有效。让我知道这是否是您想要的。

\n