I am trying to use pick event.  See the simple script below.  I am interested to find the shortest distance between pick point (mouse coord.) and the  line at the discrete points only (points on the curve from data)
What am I doing wrong ?
Regards,
Arek

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import math as math

# create figure and attach axes to it
fig = plt.figure(1)

def getMinDistance(xmouse, ymouse, xList, yList):
"""
find shortest distance between mouse coordinates and pick point
point pick may be a list of points if data is clouded
Input
xmouse - x coordinate of mouse (x - pick)
ymouse - y coordinate of mouse (y - pick)
xList  - xData from curve
yList  - yData from curve
Returns:
dmin  - minimum distance
index - index of data point in the xList and yList
"""
dmin  = math.sqrt((xList[0] - xmouse)**2. + (yList[0]-ymouse)**2.)
index = 0
for idx in range(1,len(xList)):
d = math.sqrt((xList[idx] - xmouse)**2. + (yList[idx]-ymouse)**2.)
if(d < dmin):
dmin = d
index = idx
return dmin, index

def showMarker(x, y, color):
"""
draw marker at loction x, y with color
"""
# draw marker
markerOn, = ax.plot(x, y, 'o', color = color)

def OnPick(event):
"""
pick event
"""
print '****************************'
mouseEvent = event.mouseevent
# get pick coord
xmouse, ymouse = mouseEvent.xdata, mouseEvent.ydata
# get the artist
lineObj = event.artist
print lineObj
if not isinstance(lineObj, Line2D):
return
ind = event.ind
# check if indexes exist of the pick object
N = len(ind)
if not N:
return
# get curve picked data
Xdata, Ydata = lineObj.get_data()
color = lineObj.get_color()
xLi = np.take(Xdata, ind)
yLi = np.take(Ydata, ind)
dmin, index = getMinDistance(xmouse, ymouse, xLi, yLi)

xP = xLi[index]
yP = yLi[index]

xStr = '%.4g' % xP
yStr = '%.4g' % yP
txt = 'X = ' + xStr + ' ;  ' + 'Y = ' + yStr
print txt
# show marker
showMarker(xP, yP, color)
# redraw to show marker
fig.canvas.draw()

# connect to pick event
fig.canvas.mpl_connect('pick_event',OnPick)

# generate data for display
x = np.arange(-4,4,0.1)      # x- coord
y2 = x**2 + 5.0              # y coord of first curve
y  = 2*x + 4.0               # y coord of the second curve
# create the list of x and y data
xList = [x, x]
yList = [y, y2]
objList = []     # store draw lines (artists)
# display 2 curves
for idx in range(len(xList)):
obj, = ax.plot(xList[idx], yList[idx], picker = 5)
objList.append(obj)

# display plot
plt.show(1)