# setting y-axis limit in matplotlib

PythonMatplotlib## Python Problem Overview

I need help with setting the limits of y-axis on matplotlib. Here is the code that I tried, unsuccessfully.

```
import matplotlib.pyplot as plt
plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C',
marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))
```

With the data I have for this plot, I get y-axis limits of 20 and 200. However, I want the limits 20 and 250.

## Python Solutions

## Solution 1 - Python

Get current axis via `plt.gca()`

, and then set its limits:

```
ax = plt.gca()
ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])
```

## Solution 2 - Python

Another workaround is to get the plot's axes and reassign changing only the y-values:

```
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
```

## Solution 3 - Python

One thing you can do is to set your axis range by yourself by using matplotlib.pyplot.axis.

**matplotlib.pyplot.axis**

```
from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])
```

0,10 is for x axis range. 0,20 is for y axis range.

or you can also use matplotlib.pyplot.xlim or matplotlib.pyplot.ylim

**matplotlib.pyplot.ylim**

```
plt.ylim(-2, 2)
plt.xlim(0,10)
```

## Solution 4 - Python

You can instantiate an object from `matplotlib.pyplot.axes`

and call the `set_ylim()`

on it. It would be something like this:

```
import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])
```

## Solution 5 - Python

Just for fine tuning. If you want to set only one of the boundaries of the axis and let the other boundary unchanged, you can choose one or more of the following statements

```
plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value
```

## Solution 6 - Python

This worked at least in matplotlib version 2.2.2:

```
plt.axis([None, None, 0, 100])
```

Probably this is a nice way to set up for example xmin and ymax only, etc.

## Solution 7 - Python

To add to @Hima's answer, if you want to modify a current x or y limit you could use the following.

```
import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor)
axes.set_xlim(new_xlim)
```

I find this particularly useful when I want to zoom out or zoom in just a little from the default plot settings.

## Solution 8 - Python

This should work. Your code works for me, like for Tamás and Manoj Govindan. It looks like you could try to update Matplotlib. If you can't update Matplotlib (for instance if you have insufficient administrative rights), maybe using a different backend with `matplotlib.use()`

could help.