matplotlib 刻度标签具有不同的精度[重复]

r7xajy2e  于 10个月前  发布在  其他
关注(0)|答案(2)|浏览(115)

此问题在此处已有答案

Different precision on matplotlib axis(2个答案)
10天前关闭。
在定义tick标签时,我得到了异常高的精度。例如:

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()

字符串
输出图如下所示,0.3标记(x轴和y轴)上有错误的tick标签。我试过使用np.linspace,也会产生同样的问题。
我理解浮点精度的问题,但我希望标签能更快地四舍五入。我如何纠正这一点,只显示小数点后第一位?
使用matplotlib 2.2.2

bq9c1y66

bq9c1y661#

我今天正在努力解决这个问题,这是我目前的解决方案:
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'))

字符串
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)


我不确定格式化程序应该在set_xlim之前还是之后,但这应该可以工作:)

pwuypxnk

pwuypxnk2#

如果不手动设置刻度,刻度将自动正确标记

import numpy as np
import matplotlib.pyplot as plt

fig = plt.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_xlim([0, 0.5])
ax0.set_xticks(np.arange(0, 0.51, 0.1), minor=False)

plt.show()

字符串


的数据

相关问题