How to Set Axis Range (xlim, ylim) in Matplotlib

How to Set Axis Range (xlim, ylim) in Matplotlib

Introduction

Matplotlib is one of the most widely used data visualization libraries in Python. Much of Matplotlib's popularity comes from its customization options - you can tweak just about any element from its hierarchy of objects.

In this tutorial, we'll take a look at how to set the axis range (xlim, ylim) in Matplotlib, to truncate or expand the view to specific limits. This can be useful when you want to focus on a particular portion of your data or to ensure consistency across multiple plots.

Creating a Plot

Let's first create a simple plot to work with:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')

plt.show()

In the above code, we create a figure and axis object with plt.subplots(), generate x, y, and z data points using NumPy, and then plot the sine and cosine waves on the same axis. Optionally, you could add ax.legend() to display the labels for each wave.

In this example, we've plotted the values created by applying a sine and cosine function to the sequence generated using NumPy's arange() Function. The sequence starts at 0 and ends at 10 with a step of 0.1. Running this code produces the following plot:

The x-axis currently ranges from 0 to 100, and the y-axis ranges from -1 to 1. However, you might want to modify the axis range for better visualization or to focus on a specific region of the plot.

Setting Axis Range in Matplotlib

To adjust the axis range, you can use the xlim and ylim functions. These functions can be accessed either through the PyPlot instance or the Axes instance.

How to Set X-Limit (xlim) in Matplotlib

To set the x-axis range, you can use the xlim function, which takes two arguments: the lower and upper limits of the x-axis. For example, if you want to focus on the range from 2 to 8, you can set the x-axis limits as follows:

Let's first set the X-limit using both the PyPlot and Axes instances. Both of these methods accept a tuple containing the left and right limits. For example, if we wanted to truncate the view to only show the data in the range of 25-50 on the X-axis, we'd use xlim([25, 50]):

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')

plt.xlim([25, 50])
plt.show()

This code limits the view on the X-axis to the data between 25 and 50, as shown in the resulting plot:

The same effect can be achieved by setting the limit via the ax object. This way, if we have multiple Axes, we can set the limit for them separately:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax = fig.add_subplot(121)
ax2 = fig.add_subplot(122)

ax.set_title('Full view')
ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')

ax2.set_title('Truncated view')
ax2.plot(y, color='blue', label='Sine wave')
ax2.plot(z, color='black', label='Cosine wave')

ax2.set_xlim([25, 50])

plt.show()

In this example, the first subplot (ax) displays the full range of data, while the second subplot (ax2) has a truncated view of the data between 25 and 50 on the X-axis.

How to Set Y-Limit (ylim) in Matplotlib

Now, let's set the Y-limit for better visualization and understanding of the data. This can be achieved with the same two approaches as we used for setting the X-limit:

  1. Using plt.ylim() function:
ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')

plt.ylim([-1, 0])
  1. Using ax.set_ylim() method:
ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')

ax.set_ylim([-1, 0])

Both of these approaches result in the following graph with a customized Y-axis range:

Conclusion

In this tutorial, we've gone over how to set the axis range (i.e., the X and Y limits) using Matplotlib in Python. Setting axis ranges can help improve the readability and understanding of your plots by focusing on the relevant data. Remember, you can use either the plt.xlim() and plt.ylim() functions or the ax.set_xlim() and ax.set_ylim() methods to achieve this customization.

If you're interested in Data Visualization and are unsure where to begin, we highly recommend our bundle of books on Data Visualization in Python:

Data Visualization in Python with Matplotlib and Pandas is a comprehensive book designed to guide absolute beginners with basic Python knowledge in mastering Pandas and Matplotlib. It builds a strong foundation for advanced work with these libraries, covering a wide range of plotting techniques - from simple 2D plots to animated 3D plots with interactive buttons.

This in-depth guide will teach you everything you need to know about Pandas and Matplotlib, including how to create custom plot types that aren't readily available within the library itself.

Data Visualization in Python, a book designed for beginner to intermediate Python developers, provides comprehensive guidance on data manipulation using Pandas and thoroughly explains core plotting libraries such as Matplotlib and Seaborn. Additionally, it delves into declarative and experimental libraries like Altair. Spanning 11 chapters, this book covers a total of 9 essential Python libraries: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas, and VisPy.

This book serves as a unique, practical guide to Data Visualization, offering in-depth knowledge of a wide range of tools that you may encounter and utilize throughout your career. By learning how to effectively set axis ranges (xlim, ylim) in Matplotlib, you will be able to create visually appealing and informative plots, enhancing your data analysis and presentation skills.

Was this article helpful?

Improve your dev skills!

Get tutorials, guides, and dev jobs in your inbox.

No spam ever. Unsubscribe at any time. Read our Privacy Policy.

David LandupEditor

Entrepreneur, Software and Machine Learning Engineer, with a deep fascination towards the application of Computation and Deep Learning in Life Sciences (Bioinformatics, Drug Discovery, Genomics), Neuroscience (Computational Neuroscience), robotics and BCIs.

Great passion for accessible education and promotion of reason, science, humanism, and progress.

Project

Data Visualization in Python: Visualizing EEG Brainwave Data

# python# matplotlib# seaborn# data visualization

Electroencephalography (EEG) is the process of recording an individual's brain activity - from a macroscopic scale. It's a non-invasive (external) procedure and collects aggregate, not...

David Landup
Jovana Ninkovic
Details
Project

Data Visualization in Python: The Collatz Conjecture

# python# matplotlib# data visualization

The Collatz Conjecture is a notorious conjecture in mathematics. A conjecture is a conclusion based on existing evidence - however, a conjecture cannot be proven....

David Landup
Jovana Ninkovic
Details

© 2013-2024 Stack Abuse. All rights reserved.

AboutDisclosurePrivacyTerms