在matplotlib中设置ticks标签禁用鼠标光标位置

时间:2012-09-26 15:51:09

标签: python numpy matplotlib

每当我在matplotlib中绘制某些内容时,将鼠标移到绘图上会在底部显示光标的x和y位置。这在探索数据时非常方便。

现在,如果我将ticklabels设置为其他内容,则光标底部的光标x位置为空,而gui会跟踪y位置。有没有办法继续获得x位置?

这是一个简单的例子:

import numpy as np
fig, ax = plt.subplots()
x=np.linspace(0,np.pi)
y=np.sin(x)
ax.plot(x,y)
ax.set_xticks([0,np.pi/2,np.pi])
ax.set_xticklabels(['0','pi/2','pi'])
plt.show()

1 个答案:

答案 0 :(得分:2)

不,没有简单的方法可以做到这一点。

当您使用字符串列表设置标签时,您将xaxis.major_formatter设置为FixedFormatter (doc),这有一些奇特的行为使其有效(它始终返回''除非你给它第三个参数,它在标注x轴时给出,否则不给出。使用major_formatter生成光标所在位置的标记,当您调用FixedFormatter时,它会返回'',这就是显示的内容。

如果您真的想要这个,那么您必须自己编写回叫,请参阅Color values in imshow for matplotlib?作为起点。 (或子类axes并重新实现format_coord(在当前matplotlib主分支的axes.py中的第2903行附近)