Thursday, August 25, 2011

How to use ginput

ginput is a function that enables you to select points from a figure using the mouse. This post is a simple example on how to use it.
from pylab import plot, ginput, show, axis

axis([-1, 1, -1, 1])
print "Please click three times"
pts = ginput(3) # it will wait for three clicks
print "The point selected are"
print pts # ginput returns points as tuples
x=map(lambda x: x[0],pts) # map applies the function passed as 
y=map(lambda x: x[1],pts) # first parameter to each element of pts
plot(x,y,'-o')
axis([-1, 1, -1, 1])
show()
And after three clicks this is the result on the console:
Please click three times
The point selected are
[(-0.77468982630272942, -0.3418367346938776), (0.11464019851116632, -0.21428571428571436), (0.420347394540943, 0.55612244897959173)]
and this is the figure generated:



4 comments:

  1. For teaching purposes, I'd find it more transparent instead of using map to instead say:

    pts=array(pts)
    x=pts[:,0]
    y=pts[:,1]

    ReplyDelete
    Replies
    1. I agree, map is not very intuitive

      Delete
  2. i m getting error: matplotlib does not support generators as input

    ReplyDelete
    Replies
    1. hi, it's because you are using Python 3 and this is a pretty old example. Convert x and y to lists. That should solve the problem.

      Delete

Note: Only a member of this blog may post a comment.