On 02/03/2012 06:07 AM, Benjamin Root wrote:
>
>
> On Fri, Feb 3, 2012 at 9:15 AM, Pål Gunnar Ellingsen <paa...@gmail.com
> <mailto: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.

This has never been supported; it would have to be a new option.  I 
suspect it would be quite difficult to get this right in general, even 
though the concept seems simple enough.

Eric

>
> 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



------------------------------------------------------------------------------
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

Reply via email to