Whenever I plot something in matplotlib, moving the mouse over the plot shows at the bottom the x and y position of the cursor. This is very convenient when exploring data.
Now, If I set the ticklabels to something else, the x position of the cursor at the bottom of the plot is empty, while the gui keeps track of the y position. Is there a way to keep getting the x position?
This is a simple example of this happening:
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()
No, there is no easy way to do this.
When you set the labels with a list of strings you set the
xaxis.major_formatterto beFixedFormatter(doc) which has some peculiar behavior to make it work (it always returns'', unless you give it a third argument which given when it labels the x-axis, but not otherwise). The marking of where the cursor is is generated using themajor_formatterand when you call aFixedFormatterit returns'', which is what is displayed.If you really want this, you have to write your own call back, see Color values in imshow for matplotlib? for a starting point. (or subclass
axesand re-implementformat_coord(around line 2903 in axes.py in current matplotlib master branch)