I'm trying to plot a subset of some data, but the y-axis limits are not updated properly after I set the x-axis limits. Is there a way to have matplotlib update the y-axis limits after setting the x-axis limits?

For example, consider the following plot:

import numpy
import pylab
pylab.plot(numpy.arange(100)**2.0)

which gives: Plot 1 full range

which works fine. However if I want to only view the part from x=0 to x=10, the y-scaling is messed up:

pylab.plot(numpy.arange(100)**2.0)
pylab.xlim(0,10)

which gives: Plot 1 subset.

In the former case, the x- and y-axis are scaled properly, in the latter case, the y-axis is still scaled the same, even if the data is not plotted. How do I tell matplotlib to update the y-axis scaling?

Obvious workarounds would be to plot a subset of the data itself, or to reset the y-axis limits manually by inspecting the data, but those are both rather cumbersome.

Update:

The example above is simplified, in the more general case one has:

pylab.plot(xdata, ydata1)
pylab.plot(xdata, ydata2)
pylab.plot(xdata, ydata3)
pylab.xlim(xmin, xmax)

Setting the y-axis range manually is of course possible

subidx = N.argwhere((xdata >= xmin) & (xdata <= xmax))
ymin = N.min(ydata1[subidx], ydata2[subidx], ydata3[subidx])
ymax = N.max(ydata1[subidx], ydata2[subidx], ydata3[subidx])
pylab.xlim(xmin, xmax)

but this is cumbersome to say the least (imho). Is there a faster way to do this without manually calculating the plotranges? Thanks!

Update 2:

The function autoscale does some scaling and seems the right candidate for

Edit
Report