Changing the "tick frequency" on x or y axis in matplotlib? Changing the "tick frequency" on x or y axis in matplotlib? python python

# Changing the "tick frequency" on x or y axis in matplotlib?

You could explicitly set where you want to tick marks with `plt.xticks`:

``plt.xticks(np.arange(min(x), max(x)+1, 1.0))``

For example,

``import numpy as npimport matplotlib.pyplot as pltx = [0,5,9,10,15]y = [0,1,2,3,4]plt.plot(x,y)plt.xticks(np.arange(min(x), max(x)+1, 1.0))plt.show()``

(`np.arange` was used rather than Python's `range` function just in case `min(x)` and `max(x)` are floats instead of ints.)

The `plt.plot` (or `ax.plot`) function will automatically set default `x` and `y` limits. If you wish to keep those limits, and just change the stepsize of the tick marks, then you could use `ax.get_xlim()` to discover what limits Matplotlib has already set.

``start, end = ax.get_xlim()ax.xaxis.set_ticks(np.arange(start, end, stepsize))``

The default tick formatter should do a decent job rounding the tick values to a sensible number of significant digits. However, if you wish to have more control over the format, you can define your own formatter. For example,

``ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))``

Here's a runnable example:

``import numpy as npimport matplotlib.pyplot as pltimport matplotlib.ticker as tickerx = [0,5,9,10,15]y = [0,1,2,3,4]fig, ax = plt.subplots()ax.plot(x,y)start, end = ax.get_xlim()ax.xaxis.set_ticks(np.arange(start, end, 0.712123))ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))plt.show()``

Another approach is to set the axis locator:

``import matplotlib.ticker as pltickerloc = plticker.MultipleLocator(base=1.0) # this locator puts ticks at regular intervalsax.xaxis.set_major_locator(loc)``

There are several different types of locator depending upon your needs.

Here is a full example:

``import matplotlib.pyplot as pltimport matplotlib.ticker as pltickerx = [0,5,9,10,15]y = [0,1,2,3,4]fig, ax = plt.subplots()ax.plot(x,y)loc = plticker.MultipleLocator(base=1.0) # this locator puts ticks at regular intervalsax.xaxis.set_major_locator(loc)plt.show()``

I like this solution (from the Matplotlib Plotting Cookbook):

``import matplotlib.pyplot as pltimport matplotlib.ticker as tickerx = [0,5,9,10,15]y = [0,1,2,3,4]tick_spacing = 1fig, ax = plt.subplots(1,1)ax.plot(x,y)ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))plt.show()``

This solution give you explicit control of the tick spacing via the number given to `ticker.MultipleLocater()`, allows automatic limit determination, and is easy to read later. 