Small bug in XAxis.contains() and YAxis.contains()

The pick radius for the X and Y axis artists are one-sided; is that intentional?

Original (in class XAxis), file axis.py:

def contains(self,mouseevent):

“”"Test whether the mouse event occured in the x axis.

“”"

if callable(self._contains): return self._contains(self,mouseevent)

x,y = mouseevent.x,mouseevent.y

try:

trans = self.axes.transAxes.inverted()

xaxes,yaxes = trans.transform_point((x,y))

except ValueError:

return False, {}

l,b = self.axes.transAxes.transform_point((0,0))

r,t = self.axes.transAxes.transform_point((1,1))

inaxis = xaxes>=0 and xaxes<=1 and (

(yb-self.pickradius) or

(y>t and y<t+self.pickradius))

return inaxis, {}

Corrected:

def contains(self,mouseevent):

“”"Test whether the mouse event occured in the x axis.

“”"

if callable(self._contains): return self._contains(self,mouseevent)

x,y = mouseevent.x,mouseevent.y

try:

trans = self.axes.transAxes.inverted()

xaxes,yaxes = trans.transform_point((x,y))

except ValueError:

return False, {}

l,b = self.axes.transAxes.transform_point((0,0))

r,t = self.axes.transAxes.transform_point((1,1))

inaxis = xaxes>=0 and xaxes<=1 and (

(y<b+self.pickradius and y>b-self.pickradius) or # <— change on this line

(y>t-self.pickradius and y<t+self.pickradius)) # <— change on this line

return inaxis, {}

···


Daniel Hyams
dhyams@…287…