# Fix Python – Changing the “tick frequency” on x or y axis in matplotlib

## Question

I am trying to fix how python plots my data.
Say:

``````x = [0,5,9,10,15]
y = [0,1,2,3,4]

matplotlib.pyplot.plot(x,y)
matplotlib.pyplot.show()
``````

The x axis’ ticks are plotted in intervals of 5. Is there a way to make it show intervals of 1?

Now we will see solution for issue: 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 np
import matplotlib.pyplot as plt

x = [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 np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

x = [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()
``````

This question is answered By – unutbu