Ok, so I've fixed it. Its just because the mouse goes outside the axes.  How
do I make the change in the code?

Error: line 924 in widgets.py

old code:

x,y = event.xdata, event.ydata

fixed code:

if not event.xdata is None:
    x = event.xdata
else:
    x = self.prev[0]

if not event.ydata is None:
    y = event.ydata
else:
    y = self.prev[1]

I know it's a bit verbose, but it works.

Thanks,
Aman

On Wed, Jul 21, 2010 at 2:44 PM, Aman Thakral <aman.thak...@gmail.com>wrote:

> Update on the error.
>
> It occurs in the following cases:
> - User clicks and drags from left to right and approaches the edge of the
> right side of the axes
> - User clicks and drags from right to left and approaches the edge of the
> left side of the axes
>
> I'm working on this bug now, I'll see if I can fix it.  I'll welcome any
> input you guys can provide though.
>
> Thanks,
> Aman
>
>
> On Wed, Jul 21, 2010 at 1:58 PM, Aman Thakral <aman.thak...@gmail.com>wrote:
>
>> Hi all,
>>
>> I'm getting the following exception when I use the Span Selector.  It
>> happens when I try and select the entire region.
>>
>> Exception in Tkinter callback
>>
>> Traceback (most recent call last):
>>   File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
>>     return self.func(*args)
>>   File
>> "C:\Python26\Lib\site-packages\matplotlib\backends\backend_tkagg.py", line
>> 246, in motion_notify_event
>>     FigureCanvasBase.motion_notify_event(self, x, y, guiEvent=event)
>>   File "C:\Python26\Lib\site-packages\matplotlib\backend_bases.py", line
>> 1245, in motion_notify_event
>>     self.callbacks.process(s, event)
>>   File "C:\Python26\Lib\site-packages\matplotlib\cbook.py", line 165, in
>> process
>>     func(*args, **kwargs)
>>   File "C:\Python26\Lib\site-packages\matplotlib\widgets.py", line 952, in
>> onmove
>>     self.rect.set_width(maxv-minv)
>> TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'
>>
>>
>> My sample code is shown here (its also attached):
>>
>> import matplotlib.pyplot as plt
>> from matplotlib.widgets import SpanSelector
>> import numpy as np
>> import datetime
>>
>> class TimeSelector(SpanSelector):
>>     """
>>     SpanSelector that is only activated by the left mouse button
>>     """
>>     def ignore(self,event):
>>         if event.button == 2 or event.button == 3: return True
>>
>> def onselect(xmin,xmax):
>>     print xmin,xmax
>>
>> fig = plt.figure()
>> ax = fig.add_subplot(111)
>> span = TimeSelector(ax, onselect, 'horizontal', useblit=True,
>> rectprops=dict(alpha=0.5, facecolor='yellow') )
>>
>> y = np.random.rand(100,1)
>> start = datetime.datetime(2010,7,15,0,0)
>> x = []
>> for i in range(len(y)):
>>     x.append(start + datetime.timedelta(hours=i))
>>
>> ax.plot_date(x,y,'b-')
>> plt.show()
>>
>> Any help on this issue would be greatly appreciated.
>>
>> Thanks,
>> Aman
>>
>
>
>
> --
> Aman Thakral
> B.Eng & Biosci, M.Eng Design
>



-- 
Aman Thakral
B.Eng & Biosci, M.Eng Design
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to