Thanks Justin. I have the event handling thing in place and was really looking for drawing options. Thanks for the tips. I'll look into them.


On Mon, May 2, 2011 at 11:06 AM, Justin McCann <> wrote:
You'll want to use event handling to figure out where the user clicked, and then you have a couple of options: Axes.vlines(), or pylab.axvline(). It seems like pylab.axvline() will always span the entire y-axis by default, but with Axes.vlines() you need to specify the ymin/ymax. Maybe someone else knows of an argument to pass to Axes.vlines() that will always span the entire y-axis.

Here's the code (assuming 'ipython -pylab'):

fig = figure()
plot([1,2,3,4], [5,6,7,8])

def onclick(event):
    """Draw a vertical line spanning the axes every time the user clicks inside them"""
    if event.inaxes: # make sure the click was within a set of axes
        pylab.axvline(event.xdata, axes=event.inaxes, color='r', linestyle=':') # red dotted line
        event.inaxes.figure.canvas.draw() # force a re-draw

cid = fig.canvas.mpl_connect('button_press_event', onclick) # add the click handler

... interact with it

fig.canvas.mpl_disconnect(cid) # get rid of the click-handler


Event handling:


On Mon, May 2, 2011 at 10:08 AM, Soumyaroop Roy <> wrote:
Any pointers on this?

On Sat, Apr 30, 2011 at 12:34 AM, Soumyaroop Roy <> wrote:
Hi there:

I have an x-y plot and I want to draw a vertical marker (an x=c line) on the plot on a mouse click.

How should I approach it?


WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today.  Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
Matplotlib-users mailing list