Matplotlib: set axis tight only to x or y axis

You want to use matplotlib's autoscale method from the matplotlib.axes.Axes class.

enter image description here

Using the functional API, you apply a tight x axis using

plt.autoscale(enable=True, axis='x', tight=True)

or if you are using the object oriented API you would use

ax = plt.gca()  # only to illustrate what `ax` is
ax.autoscale(enable=True, axis='x', tight=True)

enter image description here

For completeness, the axis kwarg can take 'x', 'y', or 'both', where the default is 'both'.


I just put the following at the beginning of those scripts in which I know I'll want my xlims to hug my data:

import matplotlib.pyplot as plt
plt.rcParams['axes.xmargin'] = 0

If I decide to add some whitespace buffer to an individual plot in that same script, I do it manually with:

plt.xlim(lower_limit, upper_limit)

While the accepted answer works, and is what I used for a while, I switched to this strategy because I only have to remember it once per script.