Hi

Yes you've understood my problem correctly.

Let me know if there is anything I can do to help solve this issue.

Regards

Pål

On 3 February 2012 17:07, Benjamin Root <ben.r...@ou.edu> wrote:

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

Reply via email to