All,

I am curious why this doesn't work:

# linebuilder.py

import matplotlib.pyplot as plt

class LineBuilder:
    def __init__(self, line):
        self.line=line
        self.xs=list(line.get_xdata())
        self.ys=list(line.get_ydata())
        self.cid=line.figure.canvas.mpl_connect('button_press_event', self)
        
    def __call__(self, event):
        print 'click', event
        if event.inaxes != self.line.axes:
            print event.inaxes
            print self.line.axes
            return
        self.xs.append(event.xdata)
        self.ys.append(event.ydata)
        self.line.set_data(self.xs, self.ys)
        self.line.figure.canvas.draw()
        
fig=plt.figure()
ax=fig.add_subplot(111)
ax.set_title('click to build line segments')
line, =ax.plot([0], [0])
plt.show()
linebuilder=LineBuilder(line)

However, if I put the plt.show() on the last line, it works. Can anyone explain?

David.
------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to