From b092bfdd1124f65f6c337b3f9cf24b5fe2c9ca75 Mon Sep 17 00:00:00 2001 From: pelson Date: Sun, 19 Aug 2012 16:49:44 +0100 Subject: [PATCH 1/4] Added %s support for labels. --- lib/matplotlib/artist.py | 4 +- lib/matplotlib/colorbar.py | 2 +- lib/matplotlib/container.py | 2 +- .../test_legend/legend_various_labels.pdf | Bin 0 -> 3861 bytes .../test_legend/legend_various_labels.png | Bin 0 -> 5480 bytes .../test_legend/legend_various_labels.svg | 357 ++++++++++++++++++ lib/matplotlib/tests/test_legend.py | 17 +- 7 files changed, 374 insertions(+), 8 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.png create mode 100644 lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index 072b44bf5136..b4a77c491a4e 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -675,11 +675,9 @@ def set_label(self, s): ACCEPTS: any string """ - self._label = s + self._label = '%s' % (s, ) self.pchanged() - - def get_zorder(self): """ Return the :class:`Artist`'s zorder. diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index e476c5a539b3..e600828d9712 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -401,7 +401,7 @@ def set_label(self, label, **kw): ''' Label the long axis of the colorbar ''' - self._label = label + self._label = '%s' % (label, ) self._labelkw = kw self._set_label() diff --git a/lib/matplotlib/container.py b/lib/matplotlib/container.py index cb8a58028e39..2f497b53b816 100644 --- a/lib/matplotlib/container.py +++ b/lib/matplotlib/container.py @@ -43,7 +43,7 @@ def set_label(self, s): ACCEPTS: any string """ - self._label = s + self._label = '%s' % (s, ) self.pchanged() def add_callback(self, func): diff --git a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.pdf b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.pdf new file mode 100644 index 0000000000000000000000000000000000000000..48414195a822ff331fb1d40a1f1fcc4235741859 GIT binary patch literal 3861 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.png b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..372843732dc71ad762c72ce5c9ff25a189ea73b2 GIT binary patch literal 5480 zcmeHLX;f2Z8ve2jXZf8RZ!nWfWX*J!2lSzWU;caK@3UTtg7yIgP~!sZC;gYPaM z3D~_iKk!WCmVE>7ev-x8IBEUn^?#y2zrEpe1KF8?_>T_I-;Uj~|GW0Y?eAd@qgyZU z*^ds>?Mg>)`C12U_4Jd+X%p^$A#(gNa^>!E0a^c?jL)>$rz2SO%y@p@uks)Y?zHqM z9&WJ65{(7mtceW(KIZ{kkHz8uFt+mnfb|**4L}FZ7yuhT7L0v+Jv5c8Lw`D!A?2F8 zrVMQk_BkFQ7J3Du~@>Ehl#4?D}{ZMZV5TX9dT`JZYCiJ!i`@EJ4UPnI;}RS~FQIeXz2!QuC1EJu>o*po}6I z2R<0|k%9AU79}O6TVHDcVfsl zUe48Ie~SS??_ivwa$KuLs1{= z8egh0QZS>0*@CU6rsnnTWnK%LWC~jp-3(_;wcTlN&p7N1dH`*&&Tli+>r+$e%~JQ& znfUke^71xa1Z{UW+knjzIevty!J7Vr(6XSaN46l-%`q7!H=6AG7Au{sP)87G1P@T7V}KgAux013Dg#q*tD{MJdO9iCjkod;MK8v|H=HW# zB@#t28O$Br)m{q?SeE~GAJ$d-sOtwH5&Q)6<0rXQrHQiMGLF8f{kP>PAp8=bij~%o zT$baf4gUZ!DrypA+)~ogcvCW2VKky*h!B<8E_6_3JN3Y+_K62PwOZ|$1SZOR6P(R> zR(nKrx7x|c$>HH)_LVDF#Hp;eo~CVN`A?YqIuz@Ax`u$0gaN+&hR+XAa;Oze1-l}b z3=`|75+_r4h;sf#ffQ7Ex*a@u@+7ZOTpvyuOTcdcSX_hb<@89}GY1EeVjx9S5l*aP z`w>Tkqje=YA2+;9erWu9V8IBVCb<&OCsHW*9C;Ia>52FPDEio{J$5Qe-Nhly&St{g zD-e2-dCPOZcHZAFeG*@DHFAd zb=xjtbKKAQQS7CY_F}>so6#ww-`lkDl$pUsl{hkzsJb#MQh#{?Tw-JIbR42k>a`qk zx;h+npI9KjWp~8cD=$QG$~uaJ6u!8{CZ)6*unx&gcEBb0yE4{$g5N=)CkjDX@L};*DwSPzDuzI=Viase zRrOOHtJ|sc=ffIJcBKoT2menI6%7o0h`6_Hne)K3z3~FKb-e}qJp_DudV7PS7oNw< z`wPoCQuQe*hv3bqvuD0^;x#l3GR%PSJ5X{Q&B-}x)zYY`=CYw?DM-}CVTTYa*{dtJ z5mjDJW0ZGG6EQzOpBs+`Mqll=@#(m@s(9$JFjvOzLf-U(dA6CTLun47Fcq9l5)^m~ zjXj&WEFAavTcMHi+^jorRC(sQ#Ds;1CuL`A9`MNZ;R14fzpdN0N`l|Kf;n36W z44|C>M&nGUS2K`gEo9we}Z!&K9~K79?{+1 z&ExTi+7~VZA$Jf1aG}jEVtwTLZ3N=#R3IUSMynT#mv~K0(KOEcKxZbI$bRu5G8mxk?H}EvDYA<%=a5ygB-Z{@n^%4%bUXsxNy}MiH zWyRRyb?H~L?xiU|f9vQYH*4$bC0ae-7LuHzNLefWPhsm`HIk>Ei2ZSHs(c^NJM1EQ zO27CbpQswf1X0XkZohEE8OH?)g<<;olzMgn+rxr_uVoj&((b2PPMYpSfk5{{>f5Q! zV=2kUTAej`8)@szJZk|*hSl4j<#+*}h;Dfq3o{uwb*&TZ_goDv!9I(Oj^-{dE*_S^ zITw~}zkJqUg5zsLR7bb;lVr{BH(5M(?fMyT0EWnzz{U}LpLEvnR5r48tI^DKTH+o!M5D^9|*>}G_k znuV6KS&6g;jt$k1=noPHR=YJC%}+iEo)$0rk7^RS5Cs>3W4A|Tf5H$0OO&b=8OYpZ zH#Z(QO)RMp)rzu@Uyf=!|BB7#$G>Fo!24ti7N<&nX7Ffju|H-s{r`90ri7@5YY$yp SgBctMBk+Ge$hU4UHTMU&oSTdQ literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg new file mode 100644 index 000000000000..83ed80822d31 --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 92acc26fece6..758a84883ec5 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -1,9 +1,8 @@ import numpy as np -from matplotlib.testing.decorators import image_comparison, knownfailureif +from matplotlib.testing.decorators import image_comparison import matplotlib.pyplot as plt -from nose.tools import assert_raises -from numpy.testing import assert_array_equal + @image_comparison(baseline_images=['legend_auto1'], tol=1.5e-3, remove_text=True) def test_legend_auto1(): @@ -15,6 +14,7 @@ def test_legend_auto1(): ax.plot(x, x-50, 'o', label='y=-1') ax.legend(loc=0) + @image_comparison(baseline_images=['legend_auto2'], remove_text=True) def test_legend_auto2(): 'Test automatic legend placement' @@ -24,3 +24,14 @@ def test_legend_auto2(): b1 = ax.bar(x, x, color='m') b2 = ax.bar(x, x[::-1], color='g') ax.legend([b1[0], b2[0]], ['up', 'down'], loc=0) + + +@image_comparison(baseline_images=['legend_various_labels'], remove_text=True) +def test_various_labels(): + # tests all sorts of label types + fig = plt.figure() + ax = fig.add_subplot(121) + x = np.arange(100) + ax.plot(range(4), 'o', label=1) + ax.plot(range(4, 1, -1), 'o', label='__nolegend__') + ax.legend(numpoints=1) From d21cb402bc1d234fc9a2e1f4d960b1c631cad561 Mon Sep 17 00:00:00 2001 From: pelson Date: Sun, 19 Aug 2012 19:55:32 +0100 Subject: [PATCH 2/4] Added a unicode test. --- .../test_legend/legend_various_labels.pdf | Bin 3861 -> 6408 bytes .../test_legend/legend_various_labels.png | Bin 5480 -> 7163 bytes .../test_legend/legend_various_labels.svg | 406 ++++++++++++++---- lib/matplotlib/tests/test_legend.py | 3 + 4 files changed, 333 insertions(+), 76 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.pdf b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.pdf index 48414195a822ff331fb1d40a1f1fcc4235741859..2dd7b3df0a8338dee80c109892aa09ac859448dc 100644 GIT binary patch delta 3323 zcmZuzXFwC_7By5igbf{0!O)dOl1vhkAm9oF=^({IS!zHO2_+a1A*(bgq7aI~fQp2s zB2|j?j#NRq;tE7SRHR7JMP684-y+VRIdf;`o_p>+-#3#ebp^=J2T|W8x0}2`2!yW$ zN1b{Uz55#6yOLlgm!V=N`w?WVqJ?KEB)Yvms3vS5KXHN zt`EJAx1Q0c@hc2zFebx!>-6Y8J2)%0XjDAEtOM8P~Phl{+(iG)#;` z=JwBTtk_=R^B)Z95zgkk=ER6!EH~>5M`bFhU%A)5O)c++VDRL5; z=2BhBYPGuQ&zMJ-7-{Y^z%N`B5N%0k;3@N~?rW?1YUxRM&Sh%3+XGhvrrWrI3fWEW zyh4fA!)IDA2l=X!_%wFSJc#ZTy}%UvRQ<YsY35(G+LmttqV4|msFWHCacy1GsoX&ueNEiaP z2~-h$xbHzM&4CX_`<08A3ZOACO-=B(m;4z7v&UDpk&sypZt&k&?6urdJ8Vv(o zuP|xr!|~QaH?GtgLJAT{<41LmXzex-a^JKm||cEYh0L`m$DcVXO7zn->X2L2#@ z_4fnl6NL9p^4ryFB6l#D$v{x8fM{8H9Y2*rn_cagrQ$6x` zg)Y?wImz4=Q@s4JF@lHLAosyTG&B$~Ea($D$z>c~7$WD*&(FiG&vd5GwPpJC8r-jZ z8azxvyQY$(4iX~HOK(hllzD#luidi}>QDz{>xcpKtu`HDP0Y+&$eu3Q*Y`>Ts&lW2 z^^qs{$#J_2&01~~mMP`o$wUIm7CgPjy zy7&&;-Ogw&ZQ%Oxjr-;f3mZyuVyb=LU%a>p20nZ0T zz7|<|(VtYLjZQv|59UKDqugjY)NSEi}+nFQ?8z%kEJeRNi;(km(-R zu;#|A6R9c^4!6WW7@Ne-OZanY*x#uY*LRoZ7LB=>L1f-&b@I|w7+Ft~ui(?N9SkT6 zCD-@ZYWCmZ^tP@7mpez(NR4|>-Kll#G4dX;2MuJm6`pE^>4!^q1>Fry0AJ0167ZX7 zJ(PAw@MC!YZJxyPu=E^O{NIuz90=}5F@7@;gG;$P>Ru{k1=WD$uG(2_xnZ@fG=x+)>HcE6*oh_@L&ydrV@ZO$+4 zTFud@;s&MI2Bp>lhglhFZlJ$KMnjI=&_wixW|Ob@WwC16)3xxmse7{i)ft2l4cF0P z8)%aI(L|A?kazA~?URPH$|qVT)?mY9qKCB3ocJ>xL1_+9i3QFPbJf&QF&#mK47y#i0TyS znysgQq}%}Rbsh>x5@wnZRwV)-aq*{4ycs@A57RBh*Zn4cQT6-b;oWU z116?GuokhCGcdDfr|L*bg8_fuKB@&klq=dR1I zymRgKkh&V#vJ+!1rseitVnRVbDFE|*@&FFEW%9=6kG-1^kXa13m_KFwMDH$oUAd)6 z-1^Nwdl%)yjBgwk$gtp$6!edjHb(}wWEJn*xxT($U2W4umLJ>ryI7*k6NOorf(_eZJAbJG@qNl z5;=I8e^jkw;E@Y-SZ^r7(#dC9@hA)H*PZ~R6rJV}<8-cTQ&9U0VsFe7fei79Y5mn= zG)Zk>sP!(8?P5G|UjwK*bgQtXwy0J}|C-W?8QbJ}?|8LA7Nfh0L=d4TB=mRF=SIzY zaeD7uP7^=T5%JlLy6>&@_NEz_L%Sna4~tZkSLhfFc$bHSq*eA! ziSyN-c~RuUB?KaZ;X3ZFu0$WAr!&zPW&=axVQ`Ws5vGcR!F6Cr1QG@(vQO+Q4;YgD zVTY4oa4$B(z~H{@6FYt$2B1*vryQOA$V8YO7;YKhMTEf#p3Wo}cTcy?nG_XpOK{t; z^I+L_G5;qq?ki#^#eYR47=ZYO*z~~WF9iEZFBkxPMZRpBO$6Q~+_WA0?l(>VQ`7^V z0C51Sv=WFMHy(pR;b>zJUk(6Ev*3rH#$d2)y3GUT2?PHF5EvwuP4`0#K(NVvjBV2X z7(=rQ_%Wu6p}pZZq9PF()$KR&Y~@>DK;iM*ib7#=+sIJppA^L||Hpht1a^~`%4Ye$ zN+b%utx}{au&o#*cDo_~f!am_Ah#C?pz;6d+9p5y0B}E1j6iQoh*3rTrwe2sM|TgR z4|sDo(f4#^TY@cVbI|4_5*hZ*5*F?k*#5wNUF(iMWPcx`E0{fDJXl_yV9KEj{vXDj BSla*q delta 965 zcmeA$nku(p17rQxsi*z!8VIy~uj`7O#(J!*#&cUoQ_B_BtR;31(GD+U1ad0=o;&i* zV&)F^T`Tr{c=7$czVQ8Hhb9*laEr+uIAHzF{8U0o%LJuw?MuHmA3ibVU*O%v&)rnp zo6264o_u|BO4{bC39k(Ls$3+OU!CBwKEU$aj^6w1vJc;y|7l47^Q~StAWrO_L7=Qb zsMo{Ln@Zs)&MU{%7#Dm!q-^-oV#>3`o?HLLFVEf8T>ne_4`=bC{7+J~Q;z&x9yC?& zlxh0Le>J!LyM*2@+!ZqClwtbQ%;y2y)m~hjcFcHbl%~`ABXiGuNsRjMu#|i1%jmf; zgVL&`w(xH?j9uY#|CP`5qNUc&#`VFuHSR4@FP+wZnR})rf9u1=M@tqO)vh*~QM z&Xd1?)2iOLy?@iY&nj`_9wGI8ncwog(sY(rCh7#X2g)=Z%u9)APgiy>y0I{%|A2{o z;iS{$%F{L+*OWV%XkRo(_h!I_#3zN0E8=F!FWa@j@{M7ad(aJkaT)n_n|4^fd0YIk zp2P36aC+rOqjb*dIgcjFd|Q8iUc~BSD~r>uSlj=2w^ql0{&m!|_WvE;jBos14~|{b zl0Owu`0?Fk=BJZ+XLdflaxFjOb_z(9Y|1U-x#f5I$#!J3mf*-=?8VEdtDx_anUEhjG%)6XzAv@}#O00D(O1uihdz{uRf7(>j$&=gb5*bGz5)EraH++wn=xKF)- zrG*KGq@|$&x|pGvC5FLh>J85$UX>=i`urLmEz;pCkX(k6x$ y3I+;63i?6$`6UWKJ3#E<%qn2mSpvh7tGFbwsHCDOHI2*I#K4G4Rn^tsjSB#t$$M}B diff --git a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.png b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.png index 372843732dc71ad762c72ce5c9ff25a189ea73b2..aee83850ecaeaec268652d63aa506821bc8de8d7 100644 GIT binary patch literal 7163 zcmeHMdo+}5+rI~)6DG+qG&;Nz6LKgq2xF%b*+N1na)`kur-}SY`&nz&b3OOm&vPHI>-W2UchuQ4 z=`D=06aE={7}jLzzARH#^-PNos}STg$cS6py$oLrnde72w&Rx z!JeUVt^y#P{+*G5)%7$6d!FT|80{`3mpUs1!xGvZ&hh4g4Um2otCjFS$;*h^NnGRgWd-5+Z zXGpV6^aPabA|=QXD)c?IIdKn$HQ8P2`_Yi>0-9@Dk<~KhC{6(M@a0ct4X?0~(O6{d zJ$1J&4@ceG+S?nm%~GRf>85e3dIQzuKzdUg^mZL%RtucvgQ@M+W96C~8#O@nokK#( zhp)yrefspNZ{|Wr>1-B9TDbB{J@Lo909@r01R&7_53Mz1Uj3!pgRCG^hM}TY1%S-Y zU{5<{$yaM;)tw9QkvqPuf62$od6gXYAd`%i6Vv6FDN8;fWej@H}X3Eafqx3Om2Wn({b}%BQRhR7t;v? z_#-@g0GKN1gFi9pniamMPMz{vt9ab)A*Q_<_@-?Zk#KpCm1T9%m_&)U%(WUe0yUVi zorfg+vn>_v@~!iTL~-3M0IwkLdsazF$>Mpp3l^)`({skCtU|W1&@Ib>Xbja1(9E%e zfqD~s4Q!|)Sp97V?qEu)V=N)W=x0Qxn3>r;hB1&#_Hs}>ZV14wsB*|uC&}( zrl=e|otyWzac*ua^z|5NA>bsqSwtJZyqrzA?piZ|E}w#dak#uM@bo<3OmArp6s52L zSP+Ej_yy}C26%glf2#uZNP)J3FX|=z^Ceb@^3$hPJK*hvamrk=7`*-N{S}Y*Q$@5} zyg`9aG8eW%!?%sl|aA4bJ7|&sqYeF{b*oNsbw{vJ1 z-eAo%HmT^Pv>1X`H0QqlQ)Jqz;gIxVlQhvgRH)^7`WPOX$6Ggmq>I4zh{}p$ zACa{~&J)B`M3qFO!lj&%$YN%R8Jw$ktVD*PXxyL!_cYJ@A%$E08p$e9Q&ojS8?&bu z>h$GLGOXU2j`h`y#)XB2Brj9clmKx9H&~R%V#AZkAJThi$L}k;7YWXFH zfDgDF)4r?AkG$8o-mM|l>B1G9*LL~gK0eOQh@PJ4vMfs<99xHbSmYXz3F2{W zS(tzz$yG)RD5Id=lkfO* z`=wWd!t<3GAH>DvbO#qNTP;*!f$vb+)}F+Bgtzsv)&0>+K|W1Qw

SUM?#(KZtai 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 S9L4~2eP?{e=!KzE#D4+AQ8QTp literal 5480 zcmeHLX;f2Z8ve2jXZf8RZ!nWfWX*J!2lSzWU;caK@3UTtg7yIgP~!sZC;gYPaM z3D~_iKk!WCmVE>7ev-x8IBEUn^?#y2zrEpe1KF8?_>T_I-;Uj~|GW0Y?eAd@qgyZU z*^ds>?Mg>)`C12U_4Jd+X%p^$A#(gNa^>!E0a^c?jL)>$rz2SO%y@p@uks)Y?zHqM z9&WJ65{(7mtceW(KIZ{kkHz8uFt+mnfb|**4L}FZ7yuhT7L0v+Jv5c8Lw`D!A?2F8 zrVMQk_BkFQ7J3Du~@>Ehl#4?D}{ZMZV5TX9dT`JZYCiJ!i`@EJ4UPnI;}RS~FQIeXz2!QuC1EJu>o*po}6I z2R<0|k%9AU79}O6TVHDcVfsl zUe48Ie~SS??_ivwa$KuLs1{= z8egh0QZS>0*@CU6rsnnTWnK%LWC~jp-3(_;wcTlN&p7N1dH`*&&Tli+>r+$e%~JQ& znfUke^71xa1Z{UW+knjzIevty!J7Vr(6XSaN46l-%`q7!H=6AG7Au{sP)87G1P@T7V}KgAux013Dg#q*tD{MJdO9iCjkod;MK8v|H=HW# zB@#t28O$Br)m{q?SeE~GAJ$d-sOtwH5&Q)6<0rXQrHQiMGLF8f{kP>PAp8=bij~%o zT$baf4gUZ!DrypA+)~ogcvCW2VKky*h!B<8E_6_3JN3Y+_K62PwOZ|$1SZOR6P(R> zR(nKrx7x|c$>HH)_LVDF#Hp;eo~CVN`A?YqIuz@Ax`u$0gaN+&hR+XAa;Oze1-l}b z3=`|75+_r4h;sf#ffQ7Ex*a@u@+7ZOTpvyuOTcdcSX_hb<@89}GY1EeVjx9S5l*aP z`w>Tkqje=YA2+;9erWu9V8IBVCb<&OCsHW*9C;Ia>52FPDEio{J$5Qe-Nhly&St{g zD-e2-dCPOZcHZAFeG*@DHFAd zb=xjtbKKAQQS7CY_F}>so6#ww-`lkDl$pUsl{hkzsJb#MQh#{?Tw-JIbR42k>a`qk zx;h+npI9KjWp~8cD=$QG$~uaJ6u!8{CZ)6*unx&gcEBb0yE4{$g5N=)CkjDX@L};*DwSPzDuzI=Viase zRrOOHtJ|sc=ffIJcBKoT2menI6%7o0h`6_Hne)K3z3~FKb-e}qJp_DudV7PS7oNw< z`wPoCQuQe*hv3bqvuD0^;x#l3GR%PSJ5X{Q&B-}x)zYY`=CYw?DM-}CVTTYa*{dtJ z5mjDJW0ZGG6EQzOpBs+`Mqll=@#(m@s(9$JFjvOzLf-U(dA6CTLun47Fcq9l5)^m~ zjXj&WEFAavTcMHi+^jorRC(sQ#Ds;1CuL`A9`MNZ;R14fzpdN0N`l|Kf;n36W z44|C>M&nGUS2K`gEo9we}Z!&K9~K79?{+1 z&ExTi+7~VZA$Jf1aG}jEVtwTLZ3N=#R3IUSMynT#mv~K0(KOEcKxZbI$bRu5G8mxk?H}EvDYA<%=a5ygB-Z{@n^%4%bUXsxNy}MiH zWyRRyb?H~L?xiU|f9vQYH*4$bC0ae-7LuHzNLefWPhsm`HIk>Ei2ZSHs(c^NJM1EQ zO27CbpQswf1X0XkZohEE8OH?)g<<;olzMgn+rxr_uVoj&((b2PPMYpSfk5{{>f5Q! zV=2kUTAej`8)@szJZk|*hSl4j<#+*}h;Dfq3o{uwb*&TZ_goDv!9I(Oj^-{dE*_S^ zITw~}zkJqUg5zsLR7bb;lVr{BH(5M(?fMyT0EWnzz{U}LpLEvnR5r48tI^DKTH+o!M5D^9|*>}G_k znuV6KS&6g;jt$k1=noPHR=YJC%}+iEo)$0rk7^RS5Cs>3W4A|Tf5H$0OO&b=8OYpZ zH#Z(QO)RMp)rzu@Uyf=!|BB7#$G>Fo!24ti7N<&nX7Ffju|H-s{r`90ri7@5YY$yp SgBctMBk+Ge$hU4UHTMU&oSTdQ diff --git a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg index 83ed80822d31..3805a4cda425 100644 --- a/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg +++ b/lib/matplotlib/tests/baseline_images/test_legend/legend_various_labels.svg @@ -45,9 +45,9 @@ z - - - + + + @@ -66,14 +66,82 @@ z " id="m365dd9364a" style="stroke:#000000;stroke-linecap:butt;stroke-width:0.5;"/> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - + - - - + + + - + - - - + + + - + - - - + + + - + - - - - - - - - + - - + + - + @@ -169,7 +225,7 @@ L0 4" id="mdad270ee8e" style="stroke:#000000;stroke-linecap:butt;stroke-width:0. - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + - + + + + + + + + @@ -310,18 +378,18 @@ L72 43.2" style="fill:none;stroke:#000000;"/> - - + + - + @@ -342,10 +410,196 @@ L12.4062 0 z " id="BitstreamVeraSans-Roman-31"/> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 758a84883ec5..d211ebb5d4ea 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + import numpy as np from matplotlib.testing.decorators import image_comparison @@ -33,5 +35,6 @@ def test_various_labels(): ax = fig.add_subplot(121) x = np.arange(100) ax.plot(range(4), 'o', label=1) + ax.plot(np.linspace(4, 4.1), 'o', label=u'Développés') ax.plot(range(4, 1, -1), 'o', label='__nolegend__') ax.legend(numpoints=1) From ff9c545ba1902b41d9965c270b65de68f6398576 Mon Sep 17 00:00:00 2001 From: pelson Date: Sun, 19 Aug 2012 20:21:24 +0100 Subject: [PATCH 3/4] Updated set_text docstring. --- lib/matplotlib/artist.py | 2 +- lib/matplotlib/container.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index b4a77c491a4e..51c2ebc4b266 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -673,7 +673,7 @@ def set_label(self, s): """ Set the label to *s* for auto legend. - ACCEPTS: any string + ACCEPTS: string or anything printable with '%s' conversion. """ self._label = '%s' % (s, ) self.pchanged() diff --git a/lib/matplotlib/container.py b/lib/matplotlib/container.py index 2f497b53b816..a2809108d9c6 100644 --- a/lib/matplotlib/container.py +++ b/lib/matplotlib/container.py @@ -41,7 +41,7 @@ def set_label(self, s): """ Set the label to *s* for auto legend. - ACCEPTS: any string + ACCEPTS: string or anything printable with '%s' conversion. """ self._label = '%s' % (s, ) self.pchanged() From 20fffe1d1f3094e36c6f83ae4f9e631eb0dae658 Mon Sep 17 00:00:00 2001 From: pelson Date: Mon, 20 Aug 2012 21:11:05 +0100 Subject: [PATCH 4/4] Made test_legend non utf-8 for cross developer compat. --- lib/matplotlib/tests/test_legend.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index d211ebb5d4ea..2dc002cef160 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - import numpy as np from matplotlib.testing.decorators import image_comparison @@ -35,6 +33,6 @@ def test_various_labels(): ax = fig.add_subplot(121) x = np.arange(100) ax.plot(range(4), 'o', label=1) - ax.plot(np.linspace(4, 4.1), 'o', label=u'Développés') + ax.plot(np.linspace(4, 4.1), 'o', label=u'D\xe9velopp\xe9s') ax.plot(range(4, 1, -1), 'o', label='__nolegend__') ax.legend(numpoints=1)