On Fri, Feb 3, 2012 at 9:15 AM, Pål Gunnar Ellingsen <paa...@gmail.com>wrote:
> Hi
>
> Thank you for trying to help me, though I can't see how aspect is going
> to help me. As I understand of the documentation, it would require me to
> know the
> relationship between x and y, which I don't.
> I can calculate it, but since it varies between each change in xlimits
> and different plot, it would be the same as calculating the ylimits.
>
> As for pyplot.xlim(xmin,xmax) (suggested by Ethan Swint), it does the same
> as ax.set_xlim() for me.
>
> Below is a sample code that will illustrate the problem.
>
> Regards
>
> Pål
>
> ####### Start code ############
>
> #!/usr/bin/env python
> import matplotlib
> matplotlib.use('Qt4Agg') # generate postscript output by default
>
> import matplotlib.pyplot as plt
> import numpy as np
>
> # Creating a function to plot
> x = np.linspace(-10, 10, 200)
> p = np.poly1d([2, 3, 1, 4])
> y = p(x) * np.sin(x)
>
> # plotting the full figure
> fig = plt.figure()
>
> ax = fig.add_subplot(111)
> ax.plot(x, y)
> ax.autoscale(tight=True)
> plt.title('Full graph. (Press key for next plot)')
> plt.draw()
>
> plt.waitforbuttonpress()
>
> # This is how I'm currently doing it
> # x limits
> xmin = 2
> xmax = 6
>
> # Calculating y limits
> ymin = y[np.logical_and(xmin < x, x < xmax)].min()
> ymax = y[np.logical_and(xmin < x, x < xmax)].max()
>
> # Inserting some room
> room = np.maximum(np.abs(ymin * 0.05), np.abs(ymax * 0.05))
> ymin = ymin + room * np.sign(ymin)
> ymax = ymax + room * np.sign(ymax)
>
> # Setting the limits
> ax.set_xlim([xmin, xmax])
> ax.set_ylim([ymin, ymax])
>
> plt.title('What I want (Press key for next plot)')
> plt.draw()
> plt.waitforbuttonpress()
>
> # This is what pyplot does by default if I only set the limits
> ax.autoscale(tight=True)
> ax.set_xlim([2, 6])
>
> plt.title('What I get if I only use set_xlim (Press key for exit)')
> plt.draw()
> plt.waitforbuttonpress()
> plt.close()
>
> ####### End code ############
>
>
>
Ok, I see what you want. You want the y-limits to automatically change to
fit only the data that is displayed for the x-domain you have chosen.
I have tried some tricks, and I am not sure that it is currently possible.
There might even be some sort of bug at play here because the function
ax.update_datalim() does not appear to update the internal data used for
autoscaling. We might have to look into this further.
Ben Root
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users