From: John H. <jdh...@ac...> - 2005-03-01 03:08:54
|
>>>>> "Humufr" == Humufr <hu...@ya...> writes: Humufr> Hi, I see a problem when I'm using autoscale. I Humufr> have a spectra with huge difference in y. I used xlim to Humufr> look only a part of my spectra and the ylim is not Humufr> autoscale to this peculiar part of the spectra but on all Humufr> the spectra. Humufr> I'm using the last CVS version. This was done intentionally for performance reasons. Every plot command calls autoscale, and each time this happens the autoscaler would have to iterate over all the data in the axes (text, polygons, lines, etc) and determine the vertices in the view limits. Certainly doable, but I try to make mpl reasonably efficient for large data sets and this could get expensive. Instead, when a piece of data is added to the axes initially, I update the datalim with it and use that in the autoscaler. I'm aware of the problem you describe -- autoscaling can be suboptimal when you initially set an axis view to only a part of the axes. This is a problem I can live with -- autoscaling doesn't have to be perfect, it just needs to get it right most of the time. And when it doesn't do the most sensible thing, eg in this case, it at least includes your data in the plot, and it is fairly easy for you to use the navigation controls -- eg constrained y zoom by pressing y and dragging the right mouse -- or otherwise set the limits manually. So this is an area where I'd rather trade convenience for performance. It wouldn't be to much work though, to add an option to the the autoscaler to fix one of the axes limits (eg the xlim) and autoscale the other axis only considering data within that range.... JDH |