matplotlib-devel

 [matplotlib-devel] xlim() turns off autoscaling From: Mike Kaufman - 2011-02-06 16:59:40 ```The help for xlim() says: Set/Get the xlimits of the current axes:: xmin, xmax = xlim() # return the current xlim xlim( (xmin, xmax) ) # set the xlim to xmin, xmax xlim( xmin, xmax ) # set the xlim to xmin, xmax but it also has the unexpected behavior of turning off autoscaling if used: ----- import matplotlib.pyplot as plt plt.clf() ax = plt.subplot(211) plt.draw() print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',plt.xlim() ax.plot([0,.5,1,1.5,2],[0,1,0,1,0]) plt.draw() print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim(),'\n' ax = plt.subplot(212) plt.draw() print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim() plt.plot([0,.5,1,1.5,2],[0,1,0,1,0]) plt.draw() print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim(),'\n' ----- returns: >>> import xlim_unautoscale autoscale X on: True xlim: (0.0, 1.0) autoscale X on: False xlim: (0.0, 1.0) autoscale X on: True xlim: (0.0, 1.0) autoscale X on: True xlim: (0.0, 2.0) I assume that this is because xlim() calls set_xlim() which has auto=False as a default keyword... expected behavior: xlim() should behave exactly like get_xlim() ditto for ylim() M ```
 Re: [matplotlib-devel] xlim() turns off autoscaling From: Eric Firing - 2011-02-06 17:52:43 ```On 02/06/2011 06:59 AM, Mike Kaufman wrote: > > The help for xlim() says: > > Set/Get the xlimits of the current axes:: > > xmin, xmax = xlim() # return the current xlim > xlim( (xmin, xmax) ) # set the xlim to xmin, xmax > xlim( xmin, xmax ) # set the xlim to xmin, xmax > > > but it also has the unexpected behavior of turning off autoscaling if used: > > ----- > import matplotlib.pyplot as plt > > plt.clf() > ax = plt.subplot(211) > plt.draw() > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',plt.xlim() > ax.plot([0,.5,1,1.5,2],[0,1,0,1,0]) > plt.draw() > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim(),'\n' > > ax = plt.subplot(212) > plt.draw() > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim() > plt.plot([0,.5,1,1.5,2],[0,1,0,1,0]) > plt.draw() > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim(),'\n' > ----- > > returns: > > >>> import xlim_unautoscale > autoscale X on: True xlim: (0.0, 1.0) > autoscale X on: False xlim: (0.0, 1.0) > > autoscale X on: True xlim: (0.0, 1.0) > autoscale X on: True xlim: (0.0, 2.0) > > > I assume that this is because xlim() calls set_xlim() which has > auto=False as a default keyword... > > expected behavior: xlim() should behave exactly like get_xlim() > ditto for ylim() I agree, so I have fixed this in the maintenance branch and in the trunk. Eric > > M > > ------------------------------------------------------------------------------ > The modern datacenter depends on network connectivity to access resources > and provide services. The best practices for maximizing a physical server's > connectivity to a physical network are well understood - see how these > rules translate into the virtual world? > http://p.sf.net/sfu/oracle-sfdevnlfb > _______________________________________________ > Matplotlib-devel mailing list > Matplotlib-devel@... > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel ```
 Re: [matplotlib-devel] xlim() turns off autoscaling From: Benjamin Root - 2011-02-06 18:12:09 Attachments: Message as HTML ```On Sun, Feb 6, 2011 at 11:52 AM, Eric Firing wrote: > On 02/06/2011 06:59 AM, Mike Kaufman wrote: > > > > The help for xlim() says: > > > > Set/Get the xlimits of the current axes:: > > > > xmin, xmax = xlim() # return the current xlim > > xlim( (xmin, xmax) ) # set the xlim to xmin, xmax > > xlim( xmin, xmax ) # set the xlim to xmin, xmax > > > > > > but it also has the unexpected behavior of turning off autoscaling if > used: > > > > ----- > > import matplotlib.pyplot as plt > > > > plt.clf() > > ax = plt.subplot(211) > > plt.draw() > > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',plt.xlim() > > ax.plot([0,.5,1,1.5,2],[0,1,0,1,0]) > > plt.draw() > > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim(),'\n' > > > > ax = plt.subplot(212) > > plt.draw() > > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim() > > plt.plot([0,.5,1,1.5,2],[0,1,0,1,0]) > > plt.draw() > > print 'autoscale X on: ',ax._autoscaleXon,' xlim: ',ax.get_xlim(),'\n' > > ----- > > > > returns: > > > > >>> import xlim_unautoscale > > autoscale X on: True xlim: (0.0, 1.0) > > autoscale X on: False xlim: (0.0, 1.0) > > > > autoscale X on: True xlim: (0.0, 1.0) > > autoscale X on: True xlim: (0.0, 2.0) > > > > > > I assume that this is because xlim() calls set_xlim() which has > > auto=False as a default keyword... > > > > expected behavior: xlim() should behave exactly like get_xlim() > > ditto for ylim() > > I agree, so I have fixed this in the maintenance branch and in the trunk. > > Eric > > Something I just noticed while looking at the x|ylim() functions. The code for xscale() and yscale() are acting like it returns something, but they don't. Is this a bug? The documentation doesn't claim that it returns anything. Ben Root ```
 Re: [matplotlib-devel] xlim() turns off autoscaling From: Eric Firing - 2011-02-06 20:03:03 ```On 02/06/2011 08:11 AM, Benjamin Root wrote: [...] > > Something I just noticed while looking at the x|ylim() functions. The > code for xscale() and yscale() are acting like it returns something, but > they don't. Is this a bug? The documentation doesn't claim that it > returns anything. Ben, Like ax.xscale etc, it returns None. It's not exactly a bug--the behavior is correct and matches the documentation--but the code is misleading and less concise than it could be. Having noticed it, you might as well clean it up. The code would be clearer without the use of "ret" and "return", though the end effect will be no different. Eric > > Ben Root > ```
 Re: [matplotlib-devel] xlim() turns off autoscaling From: Benjamin Root - 2011-02-07 22:50:40 Attachments: Message as HTML ```On Sun, Feb 6, 2011 at 2:02 PM, Eric Firing wrote: > On 02/06/2011 08:11 AM, Benjamin Root wrote: > [...] > > > > Something I just noticed while looking at the x|ylim() functions. The > > code for xscale() and yscale() are acting like it returns something, but > > they don't. Is this a bug? The documentation doesn't claim that it > > returns anything. > > Ben, > > Like ax.xscale etc, it returns None. > > It's not exactly a bug--the behavior is correct and matches the > documentation--but the code is misleading and less concise than it could > be. Having noticed it, you might as well clean it up. The code would > be clearer without the use of "ret" and "return", though the end effect > will be no different. > > Eric > > Done in the development branch in r8957 Ben Root ```