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?

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