Force integer axis label ticks on Matplotlib
To make a Matlabplot figure axis have integer-only label ticks, use method like:
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
# or
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
A complete standalone example follows:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
x = np.arange(0.1,10.5,0.1) # arbitrary data
fg = plt.figure(layout='constrained')
ax = fg.gca()
ax.plot(x)
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
plt.show()
If too few ticks are displayed, as per the Matplotlib MaxNLocator, you must have “at least min_n_ticks integers…found within the view limits.” Set “MaxNLocator(nbins=5,integer=True)” or similar if the defaults aren’t forcing integer ticks.