From: Levi K. <lev...@gm...> - 2010-04-04 06:57:22
|
Can anyone else confirm this bug? It was giving me fits for a while. I can't control the size of markers in my plots. Here is an old post describing exactly my problem: http://sourceforge.net/mailarchive/message.php?msg_id=972d0a0e0809232229ue9aa42eg5d791a08692f7e7b%40mail.gmail.com I am running python 2.6.4, ipython 0.10, and matplotlib 0.99.0. And what the heck are the line objects in the legend? Are there separate marker objects that I am missing? I tried messing with the legend.get_lines() objects, but these have marker types "None". Where are the marker objects I see in my legend? For those that also run across this problem, here is a hack I used to overcome the problem: ----------SNIP---------- from pylab import * x = [1,2,3]; y = [1,2,3] plot(x,y,ls='',marker='o',ms=1,color='r') plot(NaN,NaN,ls='',marker='o',ms=1*5,label='test',color='r') legend() show() ----------SNAP---------- In other words, make a plot object that has a label, with larger markers, but no data (NaN's). Thanks for any help, Levi K. The Original post (September 2008): ----------SNIP---------- Dear matplotlib users. I'm using matplotlib 0.98.3 from the packman repository on opensuse 11.0. I tried to adjust the 'markerscale option to enlarge a marker size in a legend. However, it simply did not work even in a simple code like following. from pylab import * x = [1,2,3]; y = [1,2,3] plot(x,y,ls='',marker='o',ms=1,label='test') legend(markerscale=5) show() I could only get a legend marker in a same size with the plot marker. I tried to reinstall all the packages related with python, including matplotlib, the legend marker size, however, does not change. Please help me here to change the legend marker size. Thanks. -- Yong-Duk Jin ----------SNAP---------- |
From: Jae-Joon L. <lee...@gm...> - 2010-04-05 15:55:42
|
On Sun, Apr 4, 2010 at 2:56 AM, Levi Kilcher <lev...@gm...> wrote: > And what the heck are the line objects in the legend? Are there > separate marker objects that I am missing? > Yes. l = legend() l.get_lines()[0]._legmarker.set_ms(5) The line objects in the legend handles have a _legmarker attribute which is another line objects responsible for drawing markers. This was necessary for such cases like when number of marker is 1. But, still, I recommend you to stick with your workaround, which is a preferred way. Regards, -JJ |