In matplotlib, what is the difference betweent set_xlim and set_xbound?

Question:

From the help:

set_xlim: Set the data limits for the xaxis.

set_xbound: Set the lower and upper numerical bounds of the x-axis.

That is not very clear, so let’s say that I plot something:

import matplotlib.pylab as plt
fig, ax = plt.subplots(1, 1)
ax.plot(xrange(10), xrange(10))

Now, either I do:

ax.set_xlim(2, 7)

or:

ax.set_xbound(2, 7)

I do not see the difference. I can dragg the plot, all the line is ploted between 0 and 9.

Asked By: PhML

||

Answers:

The bound can changes automatically, if you later plot something that is not within the bound. In contrast, limits are fixed and do not change automatically.

import pylab as p

t = p.arange(0.0, 2.0, 0.01)
s = p.sin(2*p.pi*t)

ax=p.subplot(111)
ax.plot(t, s, color='r',linewidth=1.0)
ax.set_ylim(-1,1)
ax.plot(t, s+1, color='g',linewidth=1.0, label="Graph2")
p.show()


ax=p.subplot(111)
ax.plot(t, s, color='r',linewidth=1.0)
ax.set_ybound(-1,1)
ax.plot(t, s+1, color='g',linewidth=1.0, label="Graph2")
p.show()

enter image description here
enter image description here

Answered By: imsc

After examining the source, we can see that set_xbound(lower, upper) makes a call to set_xlim with arguments passed like so, self.set_xlim(sorted((lower, upper), reverse=bool(self.xaxis_inverted())), auto=None)

So set_xbound is very similar to calling set_xlim with auto=None which will not change auto-scaling settings, the default when you call set_xlim will set auto=False which disables auto-scaling. This is why bounds may be altered later on by auto-scaling, as the default is to auto-scale, unless explicitly turned off (or implicitly by a method like set_xlim).

Answered By: pseudovella
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.