# Matplotlib - Axis Limits & Scales

## Axis Limits

Matplotlib automatically arrives at the minimum and maximum values of variables to be displayed along x, y (and z axis in case of 3D plot) axes of a plot. However, it is possible to set the limits explicitly by using Axes.set_xlim() and Axes.set_ylim() functions.

### Syntax

```#sets the x-axis view limits
Axes.set_xlim(self, left=None, right=None,
auto=False, xmin=None, xmax=None)

#sets the y-axis view limits
Axes.set_ylim(self, bottom=None, top=None,
auto=False, ymin=None, ymax=None)
```

### Parameters

 `left, right` `Optional. `The left and right xlim in data coordinates. Passing None leaves the respective limit unchanged. `xmin, xmax` `Optional. `Equivalent to left and right respectively, and it is an error to pass both xmin and left or xmax and right. `bottom, top` `Optional. `The bottom and top ylim in data coordinates. Passing None leaves the respective limit unchanged. `ymin, ymax` `Optional. `Equivalent to bottom and top respectively, and it is an error to pass both ymin and bottom or ymax and top. `auto` `Optional. `Specify whether to turn on autoscaling of the x-axis / y-axis. True turns on, False turns off (default action), None leaves unchanged.

### Example: setting axis limit

In the example below, although the x is defined from 0 to 20, the view limit is set to 0 to 15. Similarly, y has range -1 to 1, the view limit is set to -0.9 to 0.9.

```import matplotlib.pyplot as plt
import numpy as np

#creating a array of values between
#0 to 20 with a difference of 0.1
x = np.arange(0, 20, 0.1)
y = np.sin(x)

fig, ax = plt.subplots()

#plotting curves
ax.plot(x, y)

#formatting axes
ax.set_title("Truncated Sine Wave")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_xlim(0,15)
ax.set_ylim(-0.9, 0.9)

#displaying the figure
plt.show()
```

The output of the above code will be: ## Axis Scales

There are instances when a different scale of x-axis or y-axis is needed. In Matplotlib, it is possible to change the scale of the axis using Axes.set_xscale() and Axes.set_yscale() functions.

### Syntax

```#sets the x-axis scale
Axes.set_xscale(self, value, **kwargs)

#sets the y-axis scale
Axes.set_yscale(self, value, **kwargs)
```

### Parameters

 `value` `Optional. `Specify axis scale type to apply. It can be chosen from {'linear', 'log', 'symlog', 'logit', ...}.

### Example: setting axis scale

The example below demonstrates how to plot graphs in different scales.

```import matplotlib.pyplot as plt
import numpy as np

#creating a array of values between
#0 to 5 with a difference of 0.1
x = np.arange(0, 5, 0.1)
y1 = np.exp(x)
y2 = x**2

fig, (ax1, ax2) = plt.subplots(1,2)

#first plot - normal scale
ax1.plot(x, y1)
ax1.plot(x, y2)
ax1.set_title("Normal Scale")
ax1.set_xlabel("x")
ax1.set_ylabel("y")
ax1.legend(['exp(x)', 'x**2'])

#second plot - log scale
ax2.set_yscale("log")
ax2.plot(x, y1)
ax2.plot(x, y2)
ax2.set_title("Log Scale")
ax2.set_xlabel("x")
ax2.legend(['exp(x)', 'x**2'])

#displaying the figure
plt.show()
```

The output of the above code will be: 5