On Tue, Aug 4, 2009 at 12:50 PM, John Hunter<jdh2...@gmail.com> wrote: > On Mon, Aug 3, 2009 at 11:38 PM, Gökhan Sever<gokhanse...@gmail.com> wrote: >> Hello, >> >> I was wondering if it is possible to hide some data on figures using a say >> right click option to any of the legend entry and make it temporarily >> hidden/visible to better analyse the rest of the data? >> >> Check this screenshot for example: >> >> http://img25.imageshack.us/img25/9427/datahiding.png >> >> The red data clutters the rest of the figure, and I would like to be able to >> hide it temporarily so that I can investigate the other two relations more >> easily. >> >> Any ideas? or alternative solutions? > > It's a nice idea, and should be doable with the pick interface we have > for all mpl artists. Unfortunately, there were a few problems in the > legend implementation which blocked the pick events from hitting the > proxy lines they contained. I just made a few changes to mpl svn HEAD > to support this, and added a new example. > > examples/event_handling/legend_picking.py > > which I'll include below. JJ could you review the changes to legend.py?
John, This looks good. I guess I have overlooked the importance of setting the children properly. Regards, -JJ > > Instructions for checking out svn are at:: > > http://matplotlib.sourceforge.net/faq/installing_faq.html#install-from-svn > > Here is the example: > > """ > Enable picking on the legend to toggle the legended line on and off > """ > import numpy as np > import matplotlib.pyplot as plt > > t = np.arange(0.0, 0.2, 0.1) > y1 = 2*np.sin(2*np.pi*t) > y2 = 4*np.sin(2*np.pi*2*t) > > fig = plt.figure() > ax = fig.add_subplot(111) > > line1, = ax.plot(t, y1, lw=2, color='red', label='1 hz') > line2, = ax.plot(t, y2, lw=2, color='blue', label='2 hz') > > leg = ax.legend(loc='upper left', fancybox=True, shadow=True) > leg.get_frame().set_alpha(0.4) > > > lines = [line1, line2] > lined = dict() > for legline, realine in zip(leg.get_lines(), lines): > legline.set_picker(5) # 5 pts tolerance > lined[legline] = realine > > def onpick(event): > legline = event.artist > realline = lined[legline] > vis = realline.get_visible() > realline.set_visible(not vis) > fig.canvas.draw() > > fig.canvas.mpl_connect('pick_event', onpick) > > plt.show() > ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users