更改轴标签时,PyPlot坐标读取器已损坏

时间:2016-12-08 12:51:40

标签: python matplotlib

通常在使用pyplot绘图时,我们在右下角有当前的(x,y)值: Note box

但是,如果重新标记会发生什么?代码:

import matplotlib.pyplot as plt 
plt.ion()
plt.draw()
plt.plot([(i,i) for i in range(10)])
plt.gca().set_xticklabels((1,2,3,4,5,6,7,8,9,10))
plt.draw()

你得到:

Not good

如您所见,x值已损坏,即不再显示。这可能对非数字标签有意义,并且可能难以处理,但这实际上发生在我使用双轴时,我需要对第一个进行转换。如果我重新标记双胞胎,坐标也不会出现,即使主轴未受影响。 有没有办法检索坐标显示功能?。如果有人觉得需要制作和更改双轴的代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

使用set_xticklabels时,它将覆盖使用的格式化程序。所以必须再次设置:

plt.gca().xaxis.set_major_formatter(FormatStrFormatter('%.5f'))

如果要显示以某种方式转换的值,则必须使用FuncFormatter,它接受​​tick和position的函数,并返回标签。阅读它here。要将它与漂亮的标量格式(在链接中)结合起来,您可以使用类似:

plt.gca().xaxis.set_major_formatter(FuncFormatter(
       lambda t,p,f=yourfunc: ScalarFormatter().format_data_short(f(t))))

您可能想要在外面初始化ScalarFormatter