Gregorio, I experienced a similar issue with trying to change the marker color.
See below the previous response from JJ for accessing the legend marker or using a proxy artist. -Sterling > On Sep 4, 2012, at 5:33PM, Jae-Joon Lee wrote: > > On Wed, Sep 5, 2012 at 6:05 AM, Sterling Smith <smit...@fusion.gat.com> wrote: >> I still do not get black markers. Furthermore, if you try to make a new >> legend with the result of leg.get_lines(), you will get lines without >> markers, which leads me to the conclusion I stated in my previous email >> (which you did not copy) >>>> I suspect that this is because the legend marker is drawn separately from >>>> the legend line to accommodate the numpoints argument of the legend >>>> functions. Then the question is how to access these markers if they are >>>> separate from the line2d objects in the legend. I didn't even see them in >>>> the children of the legend [legend.get_children()]. > > This is correct. To support legend handle like --o-- (i.e., no markers > at the ends), lines and markers are drawn as a separate artist. You > may use something like, > > line[0]._legmarker.set_markerfacecolor('black') > line[1]._legmarker.set_markerfacecolor('black') > > I, personally, recommend you to use a proxy artist. > > http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist > > For example, > > You may do something like > > import pylab > pylab.plot(pylab.linspace(0,1,100),marker='o',ls='') > pylab.plot(pylab.linspace(0,1,100),marker='o',ls='-') > > # creates artists for legend purpose only > l1, = pylab.plot(pylab.linspace(0,1,100), 'ko-') > l2, = pylab.plot(pylab.linspace(0,1,100), 'ko') > # remove them from the axes. > l1.remove() > l2.remove() > > leg=pylab.legend([l1, l2], ["Test 1", "Test 2"], loc='best') > > Regards, > > -JJ On May 16, 2013, at 7:25AM, Gregorio Bastardo wrote: > Hi, > > I've recently come accross an issue when working on an interactive > marker toggling callback. The problem is illustrated below: > > import matplotlib.pyplot as plt > fig = plt.figure() > ax = fig.add_subplot(111) > line, = ax.plot(range(10), range(10)) > # uncomment next line to reproduce bug > # line.set_marker('d') > legend = ax.legend([line], ['foo']) > legend_line, = legend.get_lines() > fig.show() > raw_input('press enter to clear marker') > line.set_marker('') > legend_line.set_marker('') > fig.canvas.draw() > raw_input('press enter to set marker') > line.set_marker('d') > legend_line.set_marker('d') > fig.canvas.draw() > raw_input('press enter to exit') > > So when I add a line object to the legend *without marker*, the update > works fine both on data and legend line, but *with marker* it does not > refresh the legend line. I consider it as a bug, please tell me if I'm > doing something wrong. > > python 2.7.4 win32 > matplotlib 1.2.1 > > Thanks, > Gregorio > > ------------------------------------------------------------------------------ > AlienVault Unified Security Management (USM) platform delivers complete > security visibility with the essential security capabilities. Easily and > efficiently configure, manage, and operate all of your security controls > from a single console and one unified framework. Download a free trial. > http://p.sf.net/sfu/alienvault_d2d > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users ------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users