From 7a84962e1f43667bea88e196d2e9e32c469b9712 Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Sat, 17 Sep 2016 13:40:41 -1000 Subject: [PATCH] ENH: LogLocator can auto-select number of ticks based on axis Closes #6549 and #7001. It doesn't actually address all cases noted in #6549, but I think this is as far as we are prepared to go any time soon. --- .../test_axes/auto_numticks_log.png | Bin 0 -> 19482 bytes lib/matplotlib/tests/test_axes.py | 10 +++++ lib/matplotlib/ticker.py | 41 +++++++++++++----- 3 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/auto_numticks_log.png diff --git a/lib/matplotlib/tests/baseline_images/test_axes/auto_numticks_log.png b/lib/matplotlib/tests/baseline_images/test_axes/auto_numticks_log.png new file mode 100644 index 0000000000000000000000000000000000000000..248fb669c56a698c9a5da9ad8fb3746807de0e09 GIT binary patch literal 19482 zcmeIabyStx+CKaM0*V3#Axem%bV!GUQZDJ1MTtmv!=jc_Dhi5(bazR22-4jh(hW-Y zHy_;Rea|`XIp;Ut-}l!y#<$1VV{httX590-uKT+0x!%dkO5)?)!h;|PAMsR75rQz$ z5QH&x5eIySt9xt~{O5x06NK_b@Q>@oS8u`Bm#m(u+d>ebF8nV>s&I-i1l@rUVvm)b zB3H+qU6ps@&d&CvcLk}LbU%s=d4~OXtDJffo0$H6!QHFNYvxHOEz_9&;UuHT!sp`H z7b>=k3im=Th+$`y*C&bH$CJjSxms)T@(tqRE1d^neAU7w)dgu6F`jfV0=pnv`Pg)Fs6vaz-8EOXsi?#~-t zYiVumJ=&b)C$*&H`RC7{qdwgNduqYO z#kD+HU48fN-8TQ1w{n=#KY#wj!^c-qS644T(AU>r?#~z$H|LpGBO0l z1*oQO|M!xHw!o%&?(?AV@buNyRfnzo{CqBhwwqrRL9l%7Ot}2Q&8-p-4^R2|b2G7$x~3$h5qY`l)<=58&=aebr#IMVsf+gGhrRYQ_xqei$Z zjk@n5dU}$i3SZXawMX#Cm6n#?;<1Rld+%QV&`|2m${-^>eRF0L_`Bq-_mbbErL^Ff}nDA|_5+UN-4~M=iQ}wDwaH5@6uwR?W@LHE0BXX?2;>jo=RW z9~N@#s~|oaR%+heQfE@!?S6*8N@?K0bW8>R;i9tThCm#y_C!Y6ylTAp5T-C0tbuthmM!I_{chZ&mZvIS>_9gWm~slqbwqD{aCfaozL9s z&GCt}tdD;zgbAT9|6cm}rOZ&tUv_|xh-5K^w#qRnnRe%)00|2OFRb0$R(+#2U*Db8 zq9>(SjGZ*S29lGEtOBg^6MkYUfDNc|j!Ji2tRl57to-&Q(C$d(WP4QO2J!W#PdT*l z@EdGLPU`8ITiUwcEkD43kBISL(WAgoKi5Cs^b&TDxM`b&))* z;&n53+x>l{#6U1WI!fb1@whq@365K>G>G2p)ht>Ae^oInbaQhT+4)LGRRo%Veacu= z_QX79LhYB|+wsi(mG_* zz;8*nwCHCoTJJS2O$tnGzK2>~8a029r{6Sq8=mH-wYPp@nM<7oMOtcTOn*GCC3$j; zCeK@H9ai|SYkbXfJ<@b6+LiSDlq&CfZjVJ0eIy%dUwvNE29Iz*Hkl-a(pgaFwlHf5 z%}2S#?BIO!WlG9dHtcrTa4-qY@1KX7=@}eqJ(ZJW@%3MPnmSuP<>bH{H6=PR;rN8G zqC(BSJ?lOG<-V3-Za0^wg!y`Le&^%E@K+5Dsdf`#b+yq9wA&$mh_aAu ze^emN_(7J_iOtAG?1Q7Q$Sdn_Ks2IB54M{SbVTygAN7*-6A3B<=DDkc^!}2H~rlKBwEi9t!?)c#YKZ!LcXo9VsCCxJY5_!080R zv!qNe%M~ZAs*v264@CqfYYl72wUKANor1o6`Tl1a?>OJ@M}E>(>rTVL-dEq=bd+4i z)tk}JectAeL-+&^1+1Gsac!M`+f6G+b4K=QmUeFkl9K4sJPL-pr(VM=RZ@C5uXK(Xy4N1=yv1CO|h zc>5XIpLVt*y1%|2Z}Z1yow|no4Nwc6MWP(`)ZTKLJQ(xXD@iw zd_6ccR4TB@VmzIU!=QlKk(WGN$gRv_VtUQ?d#;9Wk8l1Kr?pwZyh%ls6U?Y)GTZdo zP%y6;wPP~8<}f!mN6*3{Tkf#dGnA{x<#uQ%6a7fNCyZJ|4Ha|Sj52Qk))d@YJOu!(r@Y6?Ab%=h?LcKUHOGOuu&^+|OiG%Xku>yNTq-vn zNO$?*-yXr63ZhryXO^?I%@2==7)=I*#cw_eL6cyQjSog~w`*w|?<3NFJw$Twh+8Xs zpU3eW%nPTOdI?n7+`@v#T2pMhL2tC63rnj|D639(YHDhc+S%zN(`%5G@w4<>T&5@f zMZfoYS8$AH|R$N)hdSry3$Kc4x;e7zJJgz(MVIr@_nad$j~!2t?&T778X zS0CTkrwj&P91#;0mGw}s;cE~cgtpvW`uwHLd8hGkb%@>@`_OnN@|7U}z0bdWSr!Jc zzg1OfV`F18Ffj$u1P2AB#>R>O6&sj%u(e>?n=CU@YMYYCp@zLMJG+=&zRu3f0YPUS zbL<84o}%Gil-(*NY4?9)ub3Kx1d| zgIN2sIg*zKGkc@$0g!{TnHf`nJr-1gU&pqc5)iQTuK04_GCSutm#+XxjKnM_nQmJN zYr}|WMam_^jM_}9MA4oxB6BF#SlR)N{bQy81onMm>z zFxFsZC=v6~rQ6!NEBO1+oe!zCe48TP-kAQ`GL^Xl=Ts&PSekGCJz%+Vz_>}eB(I*e z-tle4$~o#dlSI&JhV5i_)bmv#`|RaCm>{R_nzbJ&Ru2WHG?1jABrYtK@->$kTy;!D z8^ZKvg#nAO*`1S-edo_K#+pwuRoi7%_crf*`GP?q3I0CT(?2G2@XeL--I&zR^>@cP zjNh&wbX+}nID45;6#hBZIX_las1>$nEt8O>20ISfjdxKRG-9&g0U?97wJInpI9|g- z{roZ$nAo>}Gb=12z9jX9ttUn(8gNGq4_%r`U%Yg=&HHo^xTO}KC`+urVjgEcpv7Xr zho6wYzxkqc-Q(fk2=e{t7rVMtUXXG{!Sq&BZ3IpXkV#o5n{R21?I!86q@)ziEaJce z_zB?$oGEGdCc1FX(H$+)BYFrM8cc^BCFz zAs!pg#sm8rSD)ADKL(TB=L~J_DhnW339BY;(SHg;+GxCj2!H*W1=y)PSm(G7ETMeY zCnGZg2vna2R)zM+1++g^etJi=YSV&91VYOJF=ou%QIJtkhIo9cDu^*X>uLgPusFp(sUn6tmdox&z;e3UK@g{PoJqx*O5?wSO1ZKfekrEvpoVeH}0-|9a zUZ{$mxIE-|l4svTq9eX! zn&Q-lQ(U&X4KKr>k%{&4=fOSGnFVn2tuN&wxdhb5>pZ1paY{%*Jl8O~DyZj_^9&W9 ziG5@uG5(cEUA8A6I@|b(b(0HzK%)!oh8LxiagIrZMn5x?JmbcFxl?hMa7x2Kpa4%Sy%S0hri%(o7FcApJr-Wm?(irZlV20}f z@DlJ+Q8Eplu+FEa$BBRbeu}hq3ADILZ0NvLqX!>a$^;Zx`Y|T+SVCwe9EK%T_`pF3UOQ^K!rsz5NkCF@HSd3*#R)L?C6)oWu!q&N-d={ z8qhG%e4^HwQat~8qqZH=4+KJ%h2p1bm4J!xRCTpIAjYP+U{ER61!C;D*_zp71r3Wa z2O!2u>2D3w_N*GA)!<+rdm^LcN9k&uGtqqZERfUO&QkDKW%v7w1Z;d{Q*Q7xdgp?b zO?8vCbdET~F9=9Wg}GTF7ng?XBl@W&u$#dL*{r|bUzfVPRxnUvQa16**0 zalvZX?cW943p~83v)s|OJY-hhu$h4*29)z#cH)xYW{-A1cX7JL^H|jh-Clc9m#-9; zH;suz5aQzEWpg1Kb|*W7rgc8}un^3dGO~vmWP3r*9}$@SKA=0iw0W6=_@xayM5zGz z`S}47PxkVmoH8P-j}jFJK1BTrA^7di-neB%sNNO zRXA=BCMi>KEpKI?XA#g-3+?~6GVrhCM2ZIsFvN=^!Z*V>Xqex*-Nl?b66Wm%GGN$Iow_ff8?A8 zb~X_KOcos%%coD@%0}@g2_OF?L~T^=ZO=zoYVUSpK@*waM75av7R=Yx{SiDMna26y z0|ZY^we1QfulunRLJ^28^-x0t0|sVh8Eb39(>!SznSQTJHwtv?e2Or6^;?20$4>J* zg%~|NJd#pURyKdu0o9@`A>q^0)5Cx81wuPA{@a5I8O{t~Z)$3?g#O;zvhNh!D~Pbn zAKw0sOJ!$tJKvzaM@3ERJ_7IZWhHa-EU-V-)+c`%S2BZreVSr6&?bw3zw&al3}1Sx zxvCLhkWTU}4Rg14f9xspM@7)Uz(C7SE4l{{lE;s~e!U4c-ofa$sLz$|Pt>9`2pJg} zew*31fq{Wl)+ckVp(~#yDNFaepeb=p7SYbLnYYpI8?l-`oCRtn14&v*UeP}dB(bb0 zDP8zN`cV(cbZ@TB!+zH4leVu9XDW)(u*L`0-DpNh$^M%?u)-Hmho>liHGm0oYIIdRrI4;J zyXP;>l=ZGmurP*+BzhUc2`@kp)97FNTj)LZE218U`(F)C1_^>yd5mA|v6*YJ$>wLT z%N<}n`k+Btb9jg%CL&7x_Dw!eSy3_m%^OS=W#y-V^PMp{G7;Ry3ms8`9h$_EU%n)i zua~tJv_VrJO~R3OdpPBkZhF-KxspGwXH_%bO8M*tEDM~eyCpmS8)GbH>j?o=Ufu%d_B+5R<8z*LZ{*Wj8+kw__$Q z@mq}z+IV@>hkK1_Am=QERWd`$EkU%vz#=aY_ebPeJNov2OUulcdV1~tfQ1vjcc<%X zY!%#35ewurc9Ik1U_^Asy#}zefu4W=a3~V6;jjc(&rr$#(tq!bOAO`& z>~0CI`?bL48e?^V1c_gP)5|yOQIC|}uN+`%!=(eE)u@V`?V45><U*trRQl<|-X%r{elypiM?~BlRj^&_z4|{hJSyfZ-8j99o$Q z$m47jYiCNPj(BQefY2AS>m6W^DN!N*=h;U(ZT(9=B;ps2OzYPWW!B1(fC23ug4yju zDXm>C=HAGypSol|K|?%>EA!e(7`bsE>R(`jUvMh@J@R0@{GpnFzv{EV`HvK_fPffy zYk;1E+F&bywP@yP()w^v!ut^eZ=6HpgSPIn{(-^O=a4k4iCJfD$WW(LlH1!ZxO41@ zah0`&ENcw+x3BOB+=6&uYGJi4n~1v~VY~D5J07B^EvO1*CK3Mx>!1bK3TF}r988<{ zvZe|K{vdxOp0(_^w4_K%)`1Y~^!z4Ju)Tr}^!;$Ar1<+lrGu?5-Wowcp#O z8r1&&i4|=N!UT;Aj#z{P$;zNdD{QS*byI^BSiKqRC2&M)uz=L4spI5D7Mhtx7tI1W z_W*w*&CuXJJwIm`Sf@wW@EDqY{zi^he$N)2v(G~&#*FhypKX+V&qI>^#_qC)_ws7a zTnL?8s}L9OImPzd268#bXM&w_x&ua7QVQHP_oD`PeRowFM45xtdG-+S7S0|vmBHUz z>FFq+8w&?XTzStE>u=n!+n9~}t=B|ab06qMbOefagHdqvH)TI}A;SYs5k^B=)7tao zVG0|L6a!==%gHH_bH8SQoXeQj1ODEtop%He`N$wkSef%EBKuRt!yJbFK=J^b8F|79 zPR&1ZZu0>=fE!d4=W=e@PSo%2o0G!nU7B%Th7J%474R-d&)bn9OS9xng&r~0eY$=m zVKP3J!Fh+fZ`BB@AcB8ES$j0mg=gNRvHKaKry>^%PUNt0_kp>F<^ehejmQg7HTl&* zuF}WN$k`>=YUn?ZRa6B;$P^ZsL0A31fbb-`I76@DZfO4^SVOzG-W>ww;m8a^LXbHa zByacYaag6VQ_HtywB6F4CFx=S z71b9SEn=z!peQrs?A|svL$NdPWM>;%&+L zFpA62c{1GbeTlumMk8*()#a~if%1cbxOx5)tdj!Qd82WY6;lA=i$s4)l#z1Q*16zSL7zUwE-o%QwEnXZsc^(= zxA+MZp^|HBYYD1Tl9MGA6cp04vsGWcniXFoMY~v+UJ*PCxQ9Bd^t2)C>C*m*3=N6* zioOO=x(l&?;;?lOO-4qB%zO0?R37gmKrOZZ0~yCihyXc(OpK6Lx#NZ^aCaP5hvHy2 zsXtxCd?hg@B_kXOO}YJR*K#aO<6&ZQvPrE5s*D?g{`3NPT^jkOE2@DJ$*$kxyq9l2%8gIP zE{273g?9nf-rjCvVPO%GotC!LwE#_3frLp%NHBY{(*AFZ0g`ixop?ww} zCLJFi=TMLp44aMQ8+KxwuXvMccM*b`>Q;8K>wyi(LJBJn_clBpA7M;s1GQAZ)|(AW z0g{xsw0G8rqtm~Fgdy!tU?Tz{3u?bFU%nh^4|w-Z0eI5B#Y!qFNpPK(!?5GgM%mKR z64-7F7h+OU9V-iHow~XJS^Q`(cVc8O7^b70?a%OzH%&pn(5lg27!a*lcv%>|lzrxY zEnoMhc`N^2etsl)Fa?t5PjQrj@KVhhFzHDhNmkVUkd~0bcVt9J{4B=91rH9$=~BSo z%Bv?xXGTUwr5x=_>1WtAQ82iy_CGSu4FyE@58$$hq!hSd_Af=Km6~s>DVN?F?Z`{k z&;57L&9Non?BrvNO$4ycS5{V31H$N|r(|)R-d|!p zLqtZF*3cl4rBkhqKp+gnai%2T9CiESNy~ob(?GkmspnbYQ6NW+Y`t7l?EE8Psw3r} zZOuo|aIAF1gYl7{N;RDC|2?bDq*6_7{W*9P#GsbGo@)WQj+P(jEE%${DVQr|ynKSS zy$bAi;mj1k;5Ft>u-||%u`b&_0%>YvKmaK45oM;wA}6lPR@nQcJB1dY*8reiz+ONt-gq&+WXf$M(KS#lt%^yExIP0s8OQ=C zO5n+8`KVej_JtD?wz4HExZN!Tj`puyT>unNG0^G9h-B7b_`PB>B93s_+ z|Ald5RM=P1jR&iL0L}Rv(6-A*B}^r3bbtkjZUj1F^CnAZ+}Vh`7~_N>?3pZ)WiKrJ zjb&>R;7NGFEbC?*AVfzOO4BaAp3!I_rEGLZM-Q@!+n>KMwflF9ZV^^=WJv#Tm> zDJZC>9=yX!!$)_KHHLC+^9X?F5dw&1yNmH?d%o&MU?P0r zPWEz?U%~ZKsAdaLP)XED5*PAQu0|u{?ODshbC&h+FNaxnkp{4^1!x~JpHRuvsSL@P z2L_!Owy6yAy&}#Jm}M(~se#rovMMkc&Txh!nns3vK(w+0KdkA+@Wz| zEC+uWaI7W%`~Gx3ZjfPc1BQcL88nNU@^CD6Sb4CT;yncN5&h#m8A=9WA6JZ6DX_|R zX^vafJ)PPk2_wm>^l@g{%7SW6%;^oqR5o|HQ(C%9LuV7154CLGk$2jbFl>94sfZkzV zjQ!%~P@o7ZDXA4j>T$2#568_DxbBt0{v31${N`At5>1~|)1zxyPJ3`to@iJS9TWN& z@j-BF16oS8f2yme-DTVTaVd?lfsKx!g9e;EyvKkXe-v||r2;{D$eYaJFMg47)TL2GSei2jiT2v&x#){pQ0szxMDQj|}nZ5|G;3juC@MK;y!DakY-E zz*#NVeFs?;uA#MjgE*55_>5#%^&B{%8f+jed2?_iGbr7;baIBOgJ=M1_(n(RD@i|( z1>p>l!h?t;2pu$j++aZ*(%)?IIb?!O+EMN%Q${d|=X3c#xmY-MJ;`!71;7w-TN-)OkQV3VsoOIGl(!QH%xC6LC=R34-cxoL)C-{2QSy#{L?1uMF?0#hAC zA&qhOj|=0%`l+BQi4Eld@!vIHd7M+Qog|oUZlWS>gpMw)OMX{}0%kMR)ePiXACPm+ zj(FRX>WwsrW~}%^xJg6I_iN-8$chg{E0tq>nSvj?Z2_nX1twAjP^HF9a%#Rlg}q>i z1=!J3bw#AAaEpa~`b6B@J061ezzcr%0oY*B6gvnup(Y^bOf=%6k2b$u5xvz`@X??)F zxDNp{_;5|Ka2klLvMVsK0mXQ$hp`sqC(sQr30Aegi?yYq*(%g=k(f8m?@21iHMsK_ zlarH^j+R#P^z^iBKHPMK*|t;@cHfkBbaEmr$`HD`krxR!KK+My3_Xy>h~zX5eDmfF z(bcQ5=A%W08r&YIuAsb%f0IpwQ8lxxk;;QfSXlP0?*hn3&$gDV1y2Vs3VHGC8+}aH z#)$6keuOnl4StCV1``X5DyUjszkZ#Ff@0hv?C)Jq{rq7TqtW5v;g*h$fjs@zk@mCS zt*nJ^M-CMHc25HfJkH$VcDZnF^N}RCn>93rpaQoT?1r+PyoBhHNtoWAT~lLVhbwRp zqRqRQi;GAfU8Ak+mnX}Gu3W`seY6bE zO?woB*zYvJ8_zRKf^BuY|0^)DtgI}brL(O~8Ho&^p6+-Q&+yNsa~6|HLDaT9&|#x? zp!o~6yXvekirLn+Xa(~Ks{S;I2F`-ESD7MS)?$KA2*^s!;;g_iv~{OY7l{D&H!L;p zTMB~*yX>wi$jE#IN>yN^BH`T)+GzW6V1)Mf^%b~a7=Rv$6f#rcZpK|!{lfFQipOa{ z2E7NU0owT8LoX<5XfXQL#eMy{E2<8<_}2W#qB>WH^9w8k@(uRIMbX;)#m1A!|{gSbFDi~_X0F~7BKi*CwGGwPJ%1b9eMi&A3e=j z7y|lf9VFh66I9HKR$U464D!(hPVP;K(LDd50^?pDmZRiW_cxxN#N@8)R9$d82sXC;h|ufHDu67#!yMKa(?V#N!@tHJJs|vC z9Wxr!4hqQkEY31?|D|lz+5ou5xmL;q{!SI(n)ZHY#!miiUxiZuyKT(we9Py;HMX|) z2|^Kpcn5b7DkxAdwSD0SMrtnMR>Z z)-%ehSv(sDMGpvOOzeTWvG)7l*W_QbSi|VaVOy~BkLYRftN1qPBUJz3QC(L15jfrH z1qI4jxCF|eabeh6SxG4&HI+_9O)X|?`r6b>GuF&5H`e)OP~N}x_!PCg%V@9k((+u_ z0q0c4|GX%_%15<=Y%klWCwH^iZxdws zCm}f{1MoIt|9FTVh}jH4?$j87+}p&)L&iD*BSEZyk)-Es$PPsZ6a;tH9|P5T9p$rf zP(XygM63%S9UTft@j<$YmC@3?AgVf6Gmx`xKr&#G8>##Fc<=(GDRkTdJ!odm?y0>} z4m*Rej!X{diF^p0LAXr`^nwwI#QK45;Io765=yxK7U?ssCkhi2u%5zz$eX%HhZZ3P zgw`#Zv)UVRB>Obb;udiVt!1_1=kFM>OxnMWcc)97ATqTZ*w+40nW5GF@!JuSi;^?h zFPcc9t~vMtLlybY39Ca=fQUp%V#A6a*co~t|3?RaIfN=C)TR0AwDz`^|Bcwg^p%Rg z!DU{^6_~sw(lD{>`e@;{nt-D$WqC8Xoc2mcf6FIUs78}WWQu)%G+HsKI!|qfAf?O~ z*La6KBAa4t9A3t!;000XrTuA=lS6-GWUgl!+*R_Ij6C;8`4PX;fK~JD53&FJ@x9Cg zI5kJ=F#L$PfJM4-?B)>`V$q=@qm%&}wBWP_sNG)p1(C#HfER#}j7IIno_;$?rJ;8g zDF7z4!sH@sLPMMFbm$s!eueSW`Y^tcoqA(LPe22HpQw^AV^<82CTJJH-K5kj^4{y? zK^aOr1mYJCR?lV?S0Z~1mvjI3b#Mh@%CflX^%$rZ( zyr@PTD6j?4cK2_C4Pv>4eRUs41)qR<9CXEz21x}P3>_~18kJyVdV2;OhRz07GAk07 z_ZbCu>at;P@K9qXVkv>sP#SoHaE}RO1w>FyH5;Jh@|nwmyYudVlJOTw(t(0_wt8D1 zL^Q+?8Z7pOVInnZ6{;-V^P*X5P^jGQTSL6R0#|#133D8*pnsl{KRsDJ_ zDdVUxO z$}M=A-0t@WCVJn%T{&$Qo!dB1Dj+RT_0QScJJCm$@u_jiWW6WA@5*-^;FeZ&3CDC3YWCblMGD7Qk+Yk0X2>oRV_VBMO`nv;+cTLTFBm#zX`;?MpCE zfQt@+7MGka_NhTsSA$3_ z3oXJKs<+yWpWT2TKd!bj6Gf@q8p&=_%Fonc)9AEd{9!hfo zc@{*t?n*+V-YX~E|J@Up7;tukWtBSU-GA`Fn}&-&6189WsIuZn3en>g2h4S?2CaN?%U5Q-qDT7rWtm6m^8cnURs?-abCzUk8do zYjW=!d+{ts5`KlFTBxPvG6VavCPIqrN+_T zhMI}Va=ph@&4Pb>3ZR_ne^9#-hZf^yDjWuFMjGo@yqusla}7KSI8GzEdcLr~rIMjq znDqrTfQE#G^_q5gBxbdrY* zEU=n>F)r+!dVB)6gF!U{rQ#Um!tNC`Y1!H9nXMcg9H2CtTvEb|P&6?~e<1xe7XLPP z0dWnzQnKdu>B-5-&X68(wbm=PWX-{n*v_|=F0RGRoK{s!OYtnEC#R`&$6=rxLS%0E z?s39^rQObqH&t44-a5Jx?XqsnGii{&ZbB9fnq`U%LP4 zImv<;DYlFOjRsuy%gSI`71cDYy}^YK)POmYPL(Dw;>~kTPmXksakq4JRCtWnJq(M3 ztEoQTPHh)HA(0wsKraFjto}8!1@I+)`3f3XX`#$jf7|Z)k|# ziu}I4ZO5#hmuOy=oa}Sm>2)4~$|4}O^h`&(yG=TB?q|ReQU z7H`lZ^*2$8_K$_8-;e{G1kxCe30&Od(kM~-Im;BX_Jo8z z%fsAS5nbn^atd5|vDW@iKm>cV(~xb_v9!UJcNs#J^-y#a*;^H zHNpI-wcwR)HmHpdQ-Bg6xY%Ru1pAZcj?|CA0$wfTuZhQ5XN?Moz$}jfaOox$TqJ;{ ziU??!jgR^Vre7#w3=*>U`or`!8uC#016Wm#24%FMd}}@bP32f=Vb4xg%hqMUBwhg!~ z12?GTY|sbOjI-s1Mwba96sXTL7|0+FLgl{6F@ZIoq};ia0>t?WaC>3NhYm=9P-&qK z#4A4sfA{rGD{iE|05)-E#&kJcNQFu;@M1%a?Ra-G27hn&th3%n4C1fFfwtp5=5rq$ zSg7()WmETie)wk6R0dL=`S5I{{OD`yIv3%TPQ%YA0?apW3N`PBr#ro7%=jU$jHf&r zJ29maWM1oFf40eO=9OHmR9;?`k<{}5uk~fY!(Tq3emfF*E?i}*=4Lz{VxNk={R^3m zAAd}^!&VW{cDzeCI85>Q<_m+4w#W_Ihf9%@PEH-Yh6Fl>^KCCY4i%5x^_Yn8s%E9c z#Kg{gF}g$}ElUH0k4v#VC2q`PAH;LgVwmbJAhbxXUAtC#2S?wDwHQt3__Q0uKKVx%rn#)Zjj~)#uKRZt_oe}3I5A@>}OiH;F;3n zh>#9&vAsVr4BuQM)Pm5F)krT-4b_@X7ylo@;5R-C=s|W0_QJvq0{!@1wHW#f+MWYe#Q9sCFM_x9@N8f3HjJE>BoV|H}O%}K{_bn*GgA^F;)1?fM=l~dE&Dz)4L zFL@ms^i2BV>t}1M`=ML>H)RZ%@OB!1jj6oVxXEO13}!nUcN4nL$;OYfQ+n2*6TX23 zv4?gx8dm#BeycA2GZ$JtD5z--7iTrYOvGjIP7oezMfHKovDULII=}COarlCt*9;%Z z9?w)4znpzX_W8RzyeB}Q{Fy8JcW6cn>^* zPZu;<>`Gz{sr92r2@m5oF?Ul~>o<5Bp2ST_Rl%dwyn>dss+toz-CQ8Ka!ckb>8xi@ zq*&(1C|Y}U@N*iaD`*1F{}6jmJ8nW0iCe#}PNZ3gY>f*+HC6b23ZHU`TKMq(jG^?4 z3`BnG))PIwdqL0c4`ixySX34k5+k!nfM{uIYx7d%+Zxd9UsBlA=Q#9wdA!XAgO z&D&lz7=~6izFS#?(EH-Hzbwmd{IYq9*7AQ1KZ#P40djC~c#<=CkDHsscA=vXdE?2{ zsAaXdq$KY2^fXYQY*}umg-D}9r0f1qU)51xUtjC}P2Il1!F#+;^E%bLv6dGOJWPJH z$53HGzXwk7s48-=2tE6AkhAOWW4=&PAqMW-=H^dPNW|QnxyXFfK%M8-$EKE++ANLY ztJu!tO%QZB5&m2NDk{Q{5}v?Dj!#VdVMA4j{75So{b95inI-Z3`Osw#2Mvwe;G&B4 zR1HQ!QPIoR5N0|$y05Ay;W1^uz8_F^3mS=i%DG-Y>hY0BRYKO33hb9y$Mkg!Hh%tF zjs6sMz#64>HOMIdb`?Ipk-2&O8|=&SIywQfv#(z1>r)E~Qq=T@I>|ifEva7F*brXo zTwh+U1p>!vv5Okq0H$VSybSKDH+6Irm7Z4Tr22-+K_TMl^3g}Pf3#gLIM}!j4kTZM z)PcIm+u;|1d!7iy^J;fN&_>FP0gQJ&31NXpkI4NfZ(J(wgNC<^xAMr8f5)8X8`(-HcUCi|t+d_NqDX(uRhz zvR8o6q0!i`OXHT+DzBBt+$B>CHWd!5TCXX|ZqST8(0gg;2!d-CK-W|6O#S8RFt z=={m->}+gyHUX-V(%RaZj+IpsjM~-JRbEr`1GqIMCL!_i)vF62PYJW4GASHcK6zbP zS^3uAUqVvS*9_N)0ml==kA(S&p&_j@LvY_*3Dd5z$?9kGp_H^-$)aDgLYJt!CMN@c z@tG#|`9mwNi1+l8N0&6xL6HEJWF~RU{)g}^HDGl|A>=ow~0G?gtk=JdggbG!gV4dFOaJ)?w~T(P?hcy zG5vdYpC#G!Y)Zn%o?cT3LODBA)6-ut7g=LOY8U3-^0hmt)0(lbLw%L-%WCI zF&7sB%12IUP@s4@US=kS1LvBBHV9 zgCpLeISca+h{S8{(XBccp1|MQt%sh9(b&RKZ(Yis7}91-m$t_SQmxVX8-y$>$n;5>VtR^a2~(={}7F-h?qm+8O<4NG%#Z`BNO zWo06E4i0^1u8~)Q;btAPW=2LANm(>&nwlVrZQe0+PcyN^jl1Eox)K9v&XPx!8R# zQ#~KYabqI5ER$?$bydvGO%Ubc(wKFLdb6EpGBz*IrlGSISQszPPEYcgdlQ=GjvtK< zPp_8nQQJ~bP{e0v%WiLPf6xFcG7WN@`1trIoZQ^9rqu@d!^^v%B=SQ}_=LvmYJ7ga z(vOA)di(JsF*pz$BPsca?u6#~HVWQ! z!?m@wyDTgnHUg}ya*={A4g)**Et7A$Kw7_+2X=NYHI55dC@^ZULheQ6$kSX4#FM7HU=@# zg98ITO-)b9d99$VtgN9t{mTISSDoy3sr3UYDk_-HPL3l>*(LXw03?GD<+WcX0u{Zu z-lff@lo|vD{M?*3=v|tcuJ^l0Kp>&49MoQEM+|O=Kzh5+Hyw*rpqvFYh}VBZ{st}lQQm-Zew zCmRT8GzL)ZH4T5hJ&YqF8Ka3&^NL*;m_TFA zeut@w`8a$?w1yK5@w_qX z>gqy9Jv}|;=^icE4NguHf|K>>)76YM5Qf}3bcNt{H?VFlfqTMFUcS5wB*HZ+s*Sfc zT0YGAbMznx^7M;lc?F`M7Ii|h4V1Kl8EQE&LIVL&2P&Nq1TO48m6jHhm%mCt`RFZR z?~3gnspsVm%)nn-b0_yV2oS;$k(DJ_US5tJT)9R{>ihe*4QOSoZEVB^4&GB48Sz)I zXe1;gtY(|8xls9t@|8(`X%8#Ulk6PG((na@aF>sd419Xb;@Vn0Xa!h(Yjgh>Q``Fm zp?ax{4-;a`LEB@-Ub8cUhC!=RM<)l@_;6tBs?%MZnoC17v;5!|TgA!l=uo8#4`5|w zhW<9c;7^tAmq1au!irfy;5KL+6_=AE1ebaZRa3pl$M4AI(YC6jseS$0aQ3bw=MJC;tIHP{(?qg954n;?C-5*ZdJ``(jNmAtUJQe5|EKfleXi z0nqxgGg>gPe|4ExL(aPBBHC5>BI?BpkwrUx>y-g!43VJV;7d`mw3I@wbO3Y#8t)$* zyaSAhN9~oGo_-zA`w1r(7ec+LHy0+> 1 with traitlets - self.numticks = numticks self.numdecs = numdecs + self.numticks = numticks def set_params(self, base=None, subs=None, numdecs=None, numticks=None): """Set parameters within this locator.""" @@ -1786,7 +1793,7 @@ def base(self, base): def subs(self, subs): """ - set the minor ticks the log scaling every base**i*subs[j] + set the minor ticks for the log scaling every base**i*subs[j] """ if subs is None: self._subs = None # autosub @@ -1799,6 +1806,14 @@ def __call__(self): return self.tick_values(vmin, vmax) def tick_values(self, vmin, vmax): + if self.numticks == 'auto': + if self.axis is not None: + numticks = max(min(self.axis.get_tick_space(), 9), 2) + else: + numticks = 9 + else: + numticks = self.numticks + b = self._base # dummy axis has no axes attribute if hasattr(self.axis, 'axes') and self.axis.axes.name == 'polar': @@ -1836,12 +1851,14 @@ def tick_values(self, vmin, vmax): subs = self._subs stride = 1 - if not self.numticks > 1: - raise RuntimeError('The number of ticks must be greater than 1 ' - 'for LogLocator.') - # FIXME: The following was designed for integer division in py2. - while numdec / stride + 1 > self.numticks: - stride += 1 + + if rcParams['_internal.classic_mode']: + # Leave the bug left over from the PY2-PY3 transition. + while numdec / stride + 1 > numticks: + stride += 1 + else: + while numdec // stride + 1 > numticks: + stride += 1 decades = np.arange(math.floor(vmin) - stride, math.ceil(vmax) + 2 * stride, stride)