From f9d2381ffdee2fbddf0e8d48364df718c0a09e89 Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Thu, 15 Sep 2016 09:13:52 -1000 Subject: [PATCH 1/3] BUG: adjust tick label location when tick length changes Closes #7114. --- lib/matplotlib/axis.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 83c5e5a43a4a..45f588850941 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -300,16 +300,23 @@ def _apply_params(self, **kw): switches = [k for k in kw if k in switchkw] for k in switches: setattr(self, k, kw.pop(k)) - dirpad = [k for k in kw if k in ['pad', 'tickdir']] - if dirpad: + newmarker = [k for k in kw if k in ['size', 'width', 'pad', 'tickdir']] + if newmarker: + self._size = kw.pop('size', self._size) + self._width = kw.pop('width', self._width) self._base_pad = kw.pop('pad', self._base_pad) + # apply_tickdir makes _pad and _tickmarkers self.apply_tickdir(kw.pop('tickdir', self._tickdir)) + self.tick1line.set_marker(self._tickmarkers[0]) + self.tick2line.set_marker(self._tickmarkers[1]) + for line in (self.tick1line, self.tick2line): + line.set_markersize(self._size) + line.set_markeredgewidth(self._width) + # _get_text1_transform uses _pad from apply_tickdir trans = self._get_text1_transform()[0] self.label1.set_transform(trans) trans = self._get_text2_transform()[0] self.label2.set_transform(trans) - self.tick1line.set_marker(self._tickmarkers[0]) - self.tick2line.set_marker(self._tickmarkers[1]) tick_kw = dict([kv for kv in six.iteritems(kw) if kv[0] in ['color', 'zorder']]) if tick_kw: @@ -317,16 +324,6 @@ def _apply_params(self, **kw): self.tick2line.set(**tick_kw) for k, v in six.iteritems(tick_kw): setattr(self, '_' + k, v) - tick_list = [kv for kv - in six.iteritems(kw) if kv[0] in ['size', 'width']] - for k, v in tick_list: - setattr(self, '_' + k, v) - if k == 'size': - self.tick1line.set_markersize(v) - self.tick2line.set_markersize(v) - else: - self.tick1line.set_markeredgewidth(v) - self.tick2line.set_markeredgewidth(v) label_list = [k for k in six.iteritems(kw) if k[0] in ['labelsize', 'labelcolor']] if label_list: From 4afde2f3c667cd5f6b0edacbb2f5c7316557a477 Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Thu, 15 Sep 2016 11:04:24 -1000 Subject: [PATCH 2/3] Fix test_tightlayout/outward_ticks test and baseline images Previously, the test was broken by the inclusion of remove_text=True in the decorator. With that changed to False, and the images updated, this test serves double-duty as a test for the bug in updating tick parameters that is fixed in the present PR. --- .../test_tightlayout/outward_ticks.pdf | Bin 2242 -> 6530 bytes .../test_tightlayout/outward_ticks.png | Bin 6177 -> 25672 bytes .../test_tightlayout/outward_ticks.svg | 848 ++++++++++++++---- lib/matplotlib/tests/test_tightlayout.py | 5 +- 4 files changed, 697 insertions(+), 156 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.pdf b/lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.pdf index 7e0dd1ebcb58a4624e8a54bbc2e6cbdcf77b680c..664c30a7b78e9429b4aaf931e28f61f81299ffea 100644 GIT binary patch literal 6530 zcmb_B2{_bS`y|oe+Abm0uf-m-Z%WxCCR@aZGR6!e%`gTN64z4h)lL^lNhFlDouVRJ z*V-ydi@HTpTRXQna5?gG5Lr$U}bF!*fRxu z1Z}?wu(g~VttLl%#1}!^ayfhiFC_I%94rPP#0ogmc}%cJBr0Vsp*Z1u9+SQaCCE9Ld4czsq+}BwCvC-@F`$5{4&LNWt7vGEnM9nn`w@q)cB;NY%xqtWTBC$CE$Dm2NHj((&}#jZ&wv31;Wm{TC{(N87pF zL;YUw3n$vkT3>J8{5He#lH1kp%9$l;VT~y_W|bYeId+g$USD+m$Ui57INdGpTZhKG z42QdWTgM_lCGL*%+3&TWf9v~^`-+D?$42|CjJE&7^_m6|ePc0q;5yBeCtr!;J5-fh<}Z+^R{dUMY#PaWkAOD-Pv&F*WYSX8GJ zDpG&ZTQK&EO3K|)ZuZRX;L8No>a4)@GgX4aj8xAn)@#$XO?=;+yn^cpyU? z&(i2}*%I%4qN-(Kc8)_(pOrGUomoyiq) zY8cb}8scdA3JHJy*p25+ii?`$mGkBN=NOvHdr4nP7I@Cn^^%SqPhEaoVcDD{*-V}@ zw%|~aoX7o)+B?^)Zuv;AnsY2_&Kb(njHrE=txY$j)6Q)ipI>(>>V2hm$zQCR%p%Fb zi1@tnn13!`@lKr=s3ySIM~3ViI+JC*Q|sVhRrp}(x_9qykK6in_`Gh}RBN>{*vWI2 z)&}<_{5{WNvmaeAE+-RWG<>z5&s!w#Zr3w2Gq;#~vo|TsBiSs0ia$%(9dp^VOX9$i zfj8?5_z`TWhoz_wJJy71ffHr{bA!_l+hg!_Q+z?r&4FIczV6ZV5Cg-*sPu(l7X~+M zBbGIiRjG}sI|Z?NcXvuZMckW|mql$m=pP~dX{|PM*6jLZ7gmvy%Y&lwyM-DC-&j6iCzbTYgnNYNj7x^siMOk6YZm-DecvOwcM{ zqvdQjizg$qI79J*`;4nyaat0)E;yx?6`QS}7sNl|qLZ+(_E^Hm(eb2sBq|Bxs$Aiu z;}^2ynB?f;k*lvxy6!st)VJa8hG$FcPQ2*BULSUBt3q|I7kKRvEFC#pntc|tR<-#6 zSJp5KKezi8&vpF-EzfX~w)M-9HMZNaXc;3@^+wNw& zz3Gb~bkJM`GZ`jTL*T#1F5WPOlqm1jC zjlf@T%h+SaEiJs%efte5lK$Q)s;Bp)$abnU-p$ZdQq0Ef zD;??(%sQhp8V+ zAQHvp6bp;tw0eL8MeV1>fau(+V1<>v5QtJQ`gKM^K(0q^#FvemI+oFuzgT)UrOR$U z-u#!r-wrEG9TiWTT&h?kcOpV(s3jZ8H5$pws;ua|{m?H|OLu*|I@#|TdxsX0Kk!?j zNrq)YgU+k0*oc^C7o9W(!J53tnaWnpezSwmtJ6HImmk`_M)Kj8xGOJ>ALs3T(~>*) z-Q1kvSIeq61A4)ci#mB~xSlG)H4Rx+oB7K(+Z2XAthyO>gP_vGl3TN1^5mM8X}?JL zEn4ptKXlTX>d>{b;1IXw+JvIHgj@9w>;-QT(@cY>;(l%#Ggk+WG*-5^-QcWw!7Cas z_jv!yzOCK|+SV4M&{C(d>3_-}*ID^|?{>Un+&Itoq08&qkl?_OB18_uWP z=5=QKS2$@mqnoPNdggib#HhC7(Ymm9=NFeWpqwa{jKt3-j$eu8GfsKIOdI3 zotk!D7RvMwd(@sCbuJ4T7|}=8^^_*(@%^_e?3XaOSfY@cS#;;{wxo=`#q+vG(~iFK zuJ=u)J9~Tg&J?gZl=3pwmqSlNE3kcmtKk3FxXm$gVr)qd*VyQ4kk!O}FJ-XTZ5 zSDox*+Nvim&iDV6xH81yfX_9fZ8pCa)#%H{-Lg;(i}h@n2*|gNs+PRDSoKDbj*`5} z<-dk8uLX^p@ARux4~|&}1}OANoqZj z(M6}*8S{FgazDKPC}|>*r}+biPQ5!$-hHV5L8#MqSg6z?vQi^8i=3RTJHGIvyS{8F z>G`F$Zq1BTb(`PDh`|n+muGQm8=Va@)Bmh<$N0$IeR-tiGtS=eU`lt)8L7m|(XhlW z`w#zwMN5=?ik{V{*rmP5^9K_C;C6;1P<|eA#xB&oQWmnUPt~F=!@EZ+TK7zR`5VP#UH##ZpH|l@gs(~@y-=s~F=tIxaBltdlx;I}<(HK4boCpFv|QrxBv$oKM!*%p#AV0S;gMq&v z@bBxF@02G2p_#lNPc|glrgfn0>PQ^h71CG;e0MNKxOH^onAd+=nzW>|0nLzoDl@KXg5w5OQgR6WGu>5Y&u znEwT!{#!bDECnF|qZ3FNgo39aBs>X4C1MaVNTxV45y6AH34sXYgzIoWo`e;Rcrx7o z{{c$8jt6@oKpJ8o;;{%80}VhS004xj6ogC$bKoi>U`~br;t)qAq5vQy5Q0P^AOfO@ z3__Mn0RmvaHyq(Q9ss!glEHaMlS-k2QG|n|P#HWK1xF|ZR0;wK1Qt9?1d5AjfW3gP z@EcD6hM)+6NTv!$DjCQN@FXk_C@A7f0DOrc#Novet`WgV0mg!(5O8oGNoWK(LjFRh zK?4FAfMHRPClQ!+&z<8JnP%hyd(15Wa2BRQ_8@OG#0F%4$<}~%85Y`?s zKU?5Y(G%;pm(Qss%>pN^D^?Z=R-7Wgz0IN-bbyAX!2&DZ2J*8glYYN#NoP_*dyfZ_8*0b^xq+!be^Jqndn|YWh4ol} z6P+I#!sUms{SllAC`SGSlTdCrA4f3>U`Aq$0$J1m9G-$*iUjfbp{8i`xBVtuUZBAw zB{r914Ii!btxa(lED1x!60uke7LNthP!EIAGXM|LJZ?Y)13bn~Wf>a4Lj38BjUXZn zV5yyq3;~bHLV>hQK!Kz=`3G_$5kwFR`HF*nhkpo1j3bf>prTI05kd9;4hQnwbR3Bc zOg`-_%+u3xWEhwKz7K;T0mn|m;X%@xj>BQTqlX2yn!b;K2SsVxSpxQZ9G(Jx&(ro1 z3E;jl4Tq(I+&c}2!+oy@4(6ok`zYVr5052%XDdAZdwO^><~v&vDZpc2dGL93b_kOv x{Ld154vUL`bS?Y=yK=cOxP{+t>}c?7Ccsz@=hJz7VR#U!WGqTY$HvJP^?$J_sKxTS274%39RAQL11?EsFIhLeU~c5mD5xXDz7+N);DbcJ~dCg2m1`IWOtNS;&jZkR~8Xy?SOwcrGG64S2bhI2Cg9g_D!VLzBHpAWJ0F|03 zixDu#5+?yvLRz&-GEoYvfU~70!eBNMCeol>Lc0`7B+Zn?q=b?&nn20Kuza{~1|iHG8Ih1tb&P(@nycQ0q(MWc0i3x67$2q8 z!!yEB4<(h5N=h{pXr@ghk%8DsN{bo|H^U}JK6{R2t>^SytPEf8CO^K%t6ckuYFSzT zV7xxv*6`;WnSa`P*wM(Hvc#vZ0?m`}Nv=9`tZ5+qdUoHc4;FrHPgTS}9C-R#RR~()2~`-fqW@6>04uH7lpy&br(2 z{O}^@pmNvK?guS*?rclA^LF?3i|6P9M+s za!?!IbTQ6YaW?vyz5Hhq%ken5GFIGHkSm*0pIiTtsL;AS$P-FtV>qojwQf|X5<^$W_gkIWtnM%z^tKW;J? zMYHERdpA^;9$2T*)b3Lp%Dbf2e)xOgk!6#DE}b|WtW59JZ{IBUHmDzXDOP`djgBq; z&gF1)N5>(&E>&H{JF;m;+gue(SlKpH_2#3qqJ}(slB{4&!8DqE_oSk8MM@1fbxXh; z|IFs>Z3jKy&}OxIt-cqN$@?k44e1Lmt|mB_t&Ots)9;mdK0T*>oI{={IbXHwwOm=? zg4t_&cURp$DD$jTKMT!Qd)9w*zHjT*f0!p(E^JO+aVt!0XQf&LoH?IYIM?Jk%icNN z9#qh`)3HD*Z|R@b5A-(RCr8$x?p>ks z6g=Q){sei^X0N6C@PD(H$KCCdM^_(vG_d85`CWJYlUlkRy3V(@)I`_ZJ|itz zdx`hm+PZeD+p|p8Ioq2Nyq@z4cUvGbM>3Cnyz^BL&-yZi_dDK<=}$^8PpwQT)Vr|+ zPk!8}cCQaaFo}-M<7U=-`HDr8cy4bD_*~Apn5>yqO?2FQu)QSoz{5oczbdtsUdX-g ziE@{nExw7w-F#x*yz>tpF+29{ZWe89t1t+zr`slkO>aB*n%+C2%X(>5YTW&G9G5|# zGO2F5?+s?Lw}EX-@R-}Nde)VFA4gnWSJ2+DOB!Zaf354-gXg01n68djel`#Gs64-_ zjgZb(OjJ5-vRfytrewEU{Dyx`OCkPFKFs!so9wY<`%!UgT6c2jXMSN-tmZ3k>3BlN z%*#{DQVP;K|Ke@`TXMe7jtw&ugY|WK>hJ9alcb$pR>34i*L6Sv(f`T z&z8l8er(;KoA-Sr-~Cj@ehG6I@0aJ<5n7&*v$e0Z;*hk5_5HHQ()%9Gg_iz_z5coj z40cBVFaqEqS}+8`F`Vb3G6T&Ks*JLcfwBuV;rK8M!=VjT5&(B`ZGQGxCp_sBjw!&@Wv?_+-Lu5~6ushs}hP%_~>F^hVAtGtY z1XvjaZPZh=UaJ5&o6pABM#@YJ1;Tk60ZDRsYEB?XqiLfEMMpi^lt~kSps;zVEJ_IA zu}O?7HBb;r9TYzR5}w&cOBp0g&tpkM91Q2<99#&0Tucyz@%%B&KL8mm(qA`6!L#Xv^w?x diff --git a/lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.png b/lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.png index cc73be432858983bb2c64844fd6d796776b027f5..c34dc0bb94033880c6feecf0114b58e81cdb4238 100644 GIT binary patch literal 25672 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
    96h~hFMJ2Ulzz9#qBA1i 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 x_hq+V;j>@db;U@Tv=R - - - - - @@ -52,80 +52,282 @@ L 255.543437 41.76 +" id="mf69f7a8a7a" style="stroke:#000000;stroke-width:3;"/> - + +" id="m96682210b5" style="stroke:#000000;stroke-width:3;"/> - + + + + + + + + + + + + + - + - + + + + + + + + + + + + - + - + + + + + + + + + + + + - + - + + + + + + + + + + + + - + - + + + + + + + + + + + + - + - + + + + + + + + + + + + @@ -134,20 +336,20 @@ L 0 -16 +" id="mee62a85f81" style="stroke:#000000;stroke-width:3;"/> - + +" id="md353597a36" style="stroke:#000000;stroke-width:3;"/> - + @@ -158,80 +360,128 @@ L 0 -32 +" id="m5e8c5626a5" style="stroke:#000000;stroke-width:3;"/> - + +" id="mff051dedeb" style="stroke:#000000;stroke-width:3;"/> - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + @@ -240,20 +490,20 @@ L 16 0 +" id="m6278d38ce8" style="stroke:#000000;stroke-width:3;"/> - + +" id="md7f24aef58" style="stroke:#000000;stroke-width:3;"/> - + @@ -261,30 +511,30 @@ L 32 0 - - - - - @@ -292,72 +542,120 @@ L 534.24 41.76 - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + @@ -366,72 +664,120 @@ L 534.24 41.76 - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + @@ -439,31 +785,31 @@ L 534.24 41.76 - - - - - @@ -472,75 +818,123 @@ L 255.543437 244.540156 +" id="ma8604b1bb1" style="stroke:#000000;stroke-width:3;"/> - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + @@ -551,75 +945,123 @@ L 0 -16 +" id="m500fcd8693" style="stroke:#000000;stroke-width:3;"/> - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + @@ -627,103 +1069,151 @@ L -16 -0 - - - - - - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + @@ -732,72 +1222,120 @@ L 534.24 244.540156 - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + - + - + + + + + + + + + diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py index b3b3a9647afc..a60a94210967 100644 --- a/lib/matplotlib/tests/test_tightlayout.py +++ b/lib/matplotlib/tests/test_tightlayout.py @@ -159,7 +159,8 @@ def test_tight_layout8(): example_plot(ax, fontsize=24) -@image_comparison(baseline_images=['outward_ticks'], remove_text=True) +# The following test is misleading when the text is removed. +@image_comparison(baseline_images=['outward_ticks'], remove_text=False) def test_outward_ticks(): 'Test automatic use of tight_layout' fig = plt.figure() @@ -170,6 +171,8 @@ def test_outward_ticks(): tickdir='out', length=32, width=3, tick1On=True, which='minor') ax.yaxis.set_tick_params( tickdir='out', length=32, width=3, tick1On=True, which='minor') + # The following minor ticks are not labelled, and they + # are drawn over the major ticks and labels--ugly! ax.xaxis.set_ticks([0], minor=True) ax.yaxis.set_ticks([0], minor=True) ax = fig.add_subplot(222) From 858224846f0c91383eeb618264ca1426c0b1051c Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Thu, 15 Sep 2016 17:03:38 -1000 Subject: [PATCH 3/3] Add detail to comments in _apply_params. --- lib/matplotlib/axis.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 45f588850941..14ce5a4c0dc2 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -303,16 +303,19 @@ def _apply_params(self, **kw): newmarker = [k for k in kw if k in ['size', 'width', 'pad', 'tickdir']] if newmarker: self._size = kw.pop('size', self._size) + # Width could be handled outside this block, but it is + # convenient to leave it here. self._width = kw.pop('width', self._width) self._base_pad = kw.pop('pad', self._base_pad) - # apply_tickdir makes _pad and _tickmarkers + # apply_tickdir uses _size and _base_pad to make _pad, + # and also makes _tickmarkers. self.apply_tickdir(kw.pop('tickdir', self._tickdir)) self.tick1line.set_marker(self._tickmarkers[0]) self.tick2line.set_marker(self._tickmarkers[1]) for line in (self.tick1line, self.tick2line): line.set_markersize(self._size) line.set_markeredgewidth(self._width) - # _get_text1_transform uses _pad from apply_tickdir + # _get_text1_transform uses _pad from apply_tickdir. trans = self._get_text1_transform()[0] self.label1.set_transform(trans) trans = self._get_text2_transform()[0]