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

Reply via email to