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

###### Posted By: Anonymous

I am trying to fix how python plots my data.

Say

```
x = [0,5,9,10,15]
```

and

```
y = [0,1,2,3,4]
```

Then I would do:

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

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

## Solution

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()
```

###### Answered By: Anonymous

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.