# How to change axis range in matplotlib

## Understanding Axes and Ranges in Matplotlib

Before diving into the code, let's build an intuition around what axes are in the context of a plot. Imagine a plot as a window through which we view our data. The window frame on the sides are like the axes of the plot. On a typical two-dimensional plot, we have two frames - one horizontal (X-axis) and one vertical (Y-axis). The range of these axes determines how much of our data we can see through this window. If we set the range too narrow, we might miss out on seeing all our data, much like looking through a keyhole. Conversely, if we set it too wide, our data might look too small or sparse, akin to viewing a vast landscape from a hilltop.

## Setting the Axis Range in Matplotlib

Matplotlib is a powerful plotting library in Python that allows us to create a wide range of static, animated, and interactive visualizations. One of the most common tasks when working with Matplotlib is to adjust the axis range to suit the scale of our data. Let's look at how to do this with actual code examples.

### Adjusting Axis Range with `xlim()` and `ylim()`

The simplest way to set the axis range in Matplotlib is by using the `xlim()` and `ylim()` functions. These functions allow you to define the minimum and maximum values that will be displayed on the X and Y axes, respectively.

``````import matplotlib.pyplot as plt

# Sample data
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

# Plotting the data
plt.plot(x, y)

# Setting the axis range
plt.xlim(0, 5)  # X-axis range from 0 to 5
plt.ylim(0, 20) # Y-axis range from 0 to 20

# Display the plot
plt.show()
``````

In the above example, we've set the X-axis to range from 0 to 5 and the Y-axis from 0 to 20. This will ensure that all our data points are comfortably within the view.

### Using `axis()` to Set Both Axes

If you want to set both X and Y axis ranges at the same time, you can use the `axis()` function. This function takes a list of four values: `[xmin, xmax, ymin, ymax]`.

``````# Sample data
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

# Plotting the data
plt.plot(x, y)

# Setting the axis range for both axes
plt.axis([0, 5, 0, 20])

# Display the plot
plt.show()
``````

The `axis()` function is a shorthand that can make your code cleaner when you need to set ranges for both axes.

Sometimes, we may not know the exact range we want to set for our axes. In such cases, it's useful to dynamically adjust the axis range based on the data.

### Automatically Tighten the Axis Range

Matplotlib can automatically tighten the axis range around your data using the `autoscale()` function. This is particularly useful when you want to remove any unnecessary white space.

``````# Sample data
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

# Plotting the data
plt.plot(x, y)

# Automatically adjust the axis ranges
plt.autoscale(tight=True)

# Display the plot
plt.show()
``````

Here, `tight=True` tells Matplotlib to scale the axes just enough to fit the data.

### Setting Axis Limits with a Buffer

To set the axis limits dynamically with some buffer space around your data, you can use the `min()` and `max()` functions along with a buffer value.

``````# Sample data
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

# Plotting the data
plt.plot(x, y)

# Calculate the axis range with a buffer
buffer = 1
plt.xlim(min(x) - buffer, max(x) + buffer)
plt.ylim(min(y) - buffer, max(y) + buffer)

# Display the plot
plt.show()
``````

In this example, we've added a buffer of 1 unit around the smallest and largest data points on both axes.

For those who want to dive a bit deeper, Matplotlib offers more advanced control over the axis range through the use of `Axes` objects.

### Working with `Axes` Objects

When you create a plot, Matplotlib returns an `Axes` object that can be used to modify the plot in a more detailed way. Here's how to use it to set the axis range:

``````# Sample data
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

# Create a figure and an axes object
fig, ax = plt.subplots()

# Plot the data
ax.plot(x, y)

# Set the axis range using the axes object
ax.set_xlim(0, 5)
ax.set_ylim(0, 20)

# Display the plot
plt.show()
``````

The `subplots()` function returns a tuple containing a `Figure` and an `Axes` object. The `Axes` object provides the `set_xlim()` and `set_ylim()` methods, which are used similarly to `xlim()` and `ylim()`, but offer more control and customization.

## Conclusion

Changing the axis range in Matplotlib is like framing a picture. It's about finding the right balance to showcase your data in the best possible way. Whether you're using simple functions like `xlim()` and `ylim()`, or you're tapping into the power of `Axes` objects for finer control, Matplotlib provides the flexibility you need to present your data clearly and effectively.

As you continue your journey in programming and data visualization, remember that the tools are just instruments to bring your data to life. The true art lies in how you use these tools to tell your data's story. So go ahead, play around with the axis ranges, and see how different settings change the narrative of your visual masterpiece. Happy plotting!

## Learn to code in our 100% online programs

Altcademy coding bootcamp offers beginner-friendly, online programs designed by industry experts to help you become a coder. 85%+ of Altcademy alumni are hired within 6 months after graduation. See how we teach, or click on one of the following programs to find out more.