刻度标签具有不同的精度

tnk*_*epp 8 python matplotlib xticks yticks

在定义刻度标签时,我获得了异常高的精度。例如:

import pylab as pl

fig = pl.figure(figsize=(3.25, 2.5))
ax0 = fig.add_subplot(111)

ax0.set_ylim([0, 0.5])
ax0.set_yticks(np.arange(0, 0.51, 0.1), minor=False)
ax0.set_yticklabels(np.arange(0, 0.51, 0.1), fontsize=8)

ax0.set_xlim([0, 0.5])
ax0.set_xticks(np.arange(0, 0.51, 0.1), minor=False)
ax0.set_xticklabels(np.arange(0, 0.51, 0.1), fontsize=8)

fig.show()
Run Code Online (Sandbox Code Playgroud)

下面的输出图在 0.3 标记(x 轴和 y 轴)上有错误的刻度标签。我尝试过使用 np.linspace,这会产生同样的问题。

我理解浮点精度的问题,但我希望标签能够更快地四舍五入。如何更正此问题以仅显示第一个小数?

使用 matplotlib 2.2.2 带有错误标签的图。

Yuc*_*uca 6

我今天正在努力解决这个问题,这是我当前的解决方案:

v1:

from matplotlib.ticker import FormatStrFormatter
ax0.set_xlim([0, 0.5])
ax0.set_xticks(np.arange(0, 0.51, 0.1), minor=False)
ax0.xaxis.set_major_formatter(FormatStrFormatter('%0.1f'))
Run Code Online (Sandbox Code Playgroud)

v2:

ax0.set_xlim([0, 0.5])
ax0.set_xticks(np.round(np.arange(0, 0.51, 0.1),2), minor=False)
ax0.set_xticklabels(np.round(np.arange(0, 0.51, 0.1),2), fontsize=8)
Run Code Online (Sandbox Code Playgroud)

我不确定格式化程序应该在之前还是之后,set_xlim但这应该有效:)