On Aug 30, 2012, at 12:35PM, Benjamin Root wrote: > > > On Thu, Aug 30, 2012 at 3:26 PM, Goyo <[email protected]> wrote: > 2012/8/28 Sterling Smith <[email protected]>: > > List, > > > > Consider the following script: > > > > import pylab > > pylab.plot(pylab.linspace(0,1,100),label='Test',marker='o',ls='') > > pylab.plot(pylab.linspace(0,1,100),label='Test2',marker='o',ls='-') > > leg=pylab.legend(loc='best') > > line=leg.get_lines() > > line[0].set_color('black') > > line[1].set_color('black') > > pylab.draw() > > > > I am attaching the results I see with the TkAgg baackend. I am using > > version 1.1.0. > > > > I would expect the markers to change colors also. However, I can't seem to > > find the markers recorded in the legend object to be able to change them. > > Is this a bug or a feature (resetting the color could lead to > > inconsistencies between legend and plot)? > > > I think it's a design issue, there's no connection kept between plot > lines and the legend. You can change colors in the plot an then call > legend again instead. > > Cheers > > Goyo > > > That is correct. The lines that one obtains from the get_lines() method of > legend are completely new line objects. It is only upon the creation of > those lines (at legend creation) that the lines inherit the plot's line > properties. > > Now, in the future, it would be nice for artist objects to have shareable > "styles", in which case an edit to a style in one place effects all artists > with the same style object. But that might be something reserved for version > 2+. > > Cheers! > Ben Root >
Ben, Goyo, Thank you for taking the time to consider my question. I'm sorry that I didn't pose my question correctly. I should have said: 'Consider the _results_ of the following script:' I originally tried to attach the results I obtained, which showed no change in color for the markers in the legend, while the line connecting the markers in the legend did change color. I understand that the lines in the legend are new objects; this is desirable in my case because I have the same symbol with different colors, where the color means one thing (plasma condition), but the symbol means something else (simulated vs measured). So it makes sense for the markers in the legend describing the meaning of the symbols to be black, as opposed to any of the colors of the markers. However, setting the legend's new line2d object color properties does not change the appearance of the marker in the legend, only the appearance of the line. 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()]. Thank you for your attention, Sterling ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Matplotlib-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/matplotlib-users
