如何更改 matplotlib 中的对数刻度刻度标签

phy*_*Guy 1 python matplotlib

我正在尝试更改 matplotlib 中对数图的刻度标签,通常通过手动设置标签可以正常工作。然而,经常会出现如下所示的问题,手动移动标签似乎保留了一些旧标签。知道如何解决这个问题吗?

import matplotlib.pyplot as plt
%matplotlib inline

fig, ax = plt.subplots()
x = [1, 10]
y = [0, 1]
ax.plot(x, y)
ax.set_xscale('log')
ax.set_xlim(0, 10)

ax.set_xticks([2.5, 7.5])
Run Code Online (Sandbox Code Playgroud)

另外,我最近升级到 matplotlib 2.0.2,但我不记得以前见过这种行为。

在此输入图像描述

Uva*_*var 5

显示的值是次要刻度,要禁用它们,您可以声明:

ax.minorticks_off()
Run Code Online (Sandbox Code Playgroud)

这将导致 7.5 的刻度标签也消失。

您可能想要的是以下解决方案:

from matplotlib.ticker import StrMethodFormatter, NullFormatter
ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.1f}'))
ax.xaxis.set_minor_formatter(NullFormatter())
Run Code Online (Sandbox Code Playgroud)