我的问题是,当我绘制非常接近的y值时,matplotlib会使用yticklabel的偏差,如下图所示(左上角为+1.2)。
我不想要偏见,因为它不会减少yticklabels的长度。如何消除偏差,使其显示1.2000010,1.2000012 ...
以下是我用来生成示例的代码:
from pylab import *
plot((0,1),(1.200001,1.200002))
show()
答案 0 :(得分:3)
使用pyplot接口实现此目的的最简单(也可能是首选)方法是使用提供的函数pyplot.ticklabel_format
,其方式类似于
from pylab import *
plot((0,1),(1.200001,1.200002))
ticklabel_format(useOffset=False)
show()
其他提出的解决方案可以为您提供更直接的控制。
答案 1 :(得分:2)
看起来您只需要调整yticklabels的格式,您可以直接执行此操作。使用this示例,我得到了这个工作:
from pylab import *
from matplotlib.ticker import FormatStrFormatter
plt.clf()
ax = subplot(111)
plot((0,1),(1.200001,1.200002))
majorFormatter = FormatStrFormatter('%.7f')
ax.yaxis.set_major_formatter(majorFormatter)
show()
答案 2 :(得分:0)
您可以使用yticks()
method控制在每个ytick处绘制的文字。这是一段代码,可以满足您的需求:
from pylab import *
plot((0,1),(1.200001,1.200002))
ticks,ticklabels = yticks()
newTickLabels = []
for tick in ticks:
newTickLabels.append("%10.7f"%tick)
yticks(ticks,newTickLabels)
show()
我使用yticks()
没有参数来获取刻度和相应的标签,我忽略了它们。然后我创建一个新的字符串数组,每个字符串一个。每个标签都是字符串格式的刻度值。您必须调整格式字符串"%10.7f"
才能获得所需的外观。然后我将标记和标签返回到yticks()
方法以重新定义它们。
结果如下:
看起来y限制也会自动改变;这可以使用ylim()
进行调整。