zje
zje

Reputation: 3912

python matplotlib imshow() custom tickmarks

I'm trying to set custom tick marks on my imshow() output, but haven't found the right combination.

The script below summarizes my attempts. In this script, I'm trying to make the tickmarks at all even numbers on each axis instead of the default (-10,-5,0,5,10)

#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

#Generate random histogram
N=25
middle=N/2
hist=np.random.random_sample((N,N))

#Ticks at even numbers, data centered at 0
ticks=np.arange(-middle,middle+2,2)

extent=(-middle,middle,-middle,middle)
plt.imshow(hist, interpolation='nearest', extent=extent, origin='lower')
plt.colorbar()

#
#These are my attempts to set the tick marks
#
#plt.gcf().gca().set_ticks(ticks)

#plt.gca().set_ticks(ticks)

#ax=plt.axes()
#ax.set_ticks(ticks)

plt.show()

I'm starting to get the feeling that set_ticks() might not be the way to do it, but I'm not sure what else to try.

Thanks!

Upvotes: 22

Views: 82227

Answers (1)

mechanical_meat
mechanical_meat

Reputation: 169304

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.xticks

plt.xticks(ticks) # `ticks` is a list here!

Edit: as Yann mentions in a comment, you may also be interested in plt.yticks()

Result (using plt.xticks(ticks, fontsize=9)): enter image description here

Upvotes: 20

Related Questions