From 232c50d9f54e4817413023e15bb5669d5ddd1563 Mon Sep 17 00:00:00 2001 From: James Pallister Date: Tue, 26 May 2015 00:37:27 +0100 Subject: [PATCH 1/3] Update the hatching if the fill color is changed (PDF backend) --- lib/matplotlib/backends/backend_pdf.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/matplotlib/backends/backend_pdf.py b/lib/matplotlib/backends/backend_pdf.py index a966cef7a981..f0773e0c4607 100644 --- a/lib/matplotlib/backends/backend_pdf.py +++ b/lib/matplotlib/backends/backend_pdf.py @@ -2283,6 +2283,7 @@ def delta(self, other): needed to transform self into other. """ cmds = [] + fill_performed = False for params, cmd in self.commands: different = False for p in params: @@ -2301,7 +2302,13 @@ def delta(self, other): if different: break + # Need to update hatching if we also updated fillcolor + if params == ('_hatch',) and fill_performed: + different = True + if different: + if params == ('_fillcolor',): + fill_performed = True theirs = [getattr(other, p) for p in params] cmds.extend(cmd(self, *theirs)) for p in params: From 7fff74dd9ee661c465e601d4efe65a0c3b14557c Mon Sep 17 00:00:00 2001 From: James Pallister Date: Tue, 26 May 2015 10:52:01 +0100 Subject: [PATCH 2/3] Add a new PDF backend test for hatching changes --- .../test_backend_pdf/hatching_legend.pdf | Bin 0 -> 2813 bytes lib/matplotlib/tests/test_backend_pdf.py | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_pdf/hatching_legend.pdf diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pdf/hatching_legend.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pdf/hatching_legend.pdf new file mode 100644 index 0000000000000000000000000000000000000000..30987d5f6d247f2f0026a77850a63201b0b2f0c6 GIT binary patch literal 2813 zcmd5;dstIf66YaOvO!8&RA{Y7EJdp1K9T_P5+%GAA_!RV1B8%VAR2G7$&Cj1pr94X zii*YZ5?k0J76B2dyg`a!p^CWRE?7atN3Hm1Su3EhxaS5Ckbe8^{dVYUqK|H060|e15Qp1 zf)vq;wsSTF`h@Q!gcPt*>%a{ZMaW6OrI!rES1uL$6BG!7rg(19JfWfh;<+1|-8B7n znSOhM5P-O#->@Fi_t#>eQ^#y0lc!=btOvsy`plO3NP{jJ0(+$L_UkyS2?th4t()Q8RO|slD~RQy-f1?iQs4D+{aGjz`;Xl`$5#pZbP&7>(v1RdA_BahhJrK)rZJoamgdX?Ax5)z2JTJsG76IlllY%fz_G>w66jA6GROc( z=P7opF9`;a?bAPC-o+Bg(i!>GC7M=d%wY*lOZrME2sMNLt2+V1gXfA#YT7znzox^1 z3@=g(dz&}v)Eb<3G;(6Y#*uqWPwVz1{+X}z-U;b!-lCDB#qhaVRtL!8`q0qk7nJ3n zS8^-A?0#|U$=%5<_VFvLs-8HuTyBg@4lCMm=U58sdMoIuf4o@McucUxYHMQ0LHyWh zt+jbCs+hWYySIUEv8lnw-)~R!&P{DwbXp_ZuBn%~Gf_)4WFZE14xr|<)p>WjgBri`E~7uJ!M89*MjGou3@4r%et?t^2{uTGH zCim&~xyJ^3oFGGG%$$nj>?=DSeZ%>MyhX6ixbKS|o z$2EK@80lCN*l@M+;!u!I(@-sc;=Q*@CO=)Q+F{(rMd~zj5h5_aYiroEzcNprZem2m zXAWw7`-CB~erR9l#uQci97+m_> zHD^&m_ctb|mQ-Zu8T|H6e`C1ThSq(URhnUnVl=d}_wnY=BcjSCnyU)PRY`jSxN|B!Kj8@z3-)|f(i*m0MXYrD#V%B4N`+#ui!$-oiT?OOcQO_vXaDn z&RZ|}`V$4^Kbegcrf%nX>)MDPhd%g+CO_xFM`kP93Ov0_bQ3%)mK|>GH1571Sa?|j z5s#GFeUgyLv2bA@u+2Vq!2eXVYwndBTIA&m?|l;CrTW7K!z0D63mHpy{h3nh0XybY zr$#(5psvDmX9&8XFR0b@5V1fww|=`wm9Ry_((5G_(LGq*`u*rCK2vk)d1baEU~^gm z;sTo}C6F{ov(qhxGWK|2U`cCC`x9BAhWw!QhB819Jf?*B7%VejLSe@Kfs#H zWphCUcrC*qM)U*785xe_5YqWF)CPsa$D1-74jJ=hIL2O}hhw&I#&|;yM-wlt50Yp~g9EIPIFd`nWOv4Xn}iJpcdz literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_backend_pdf.py b/lib/matplotlib/tests/test_backend_pdf.py index 6ba1e4a5c36e..8f49b227f150 100644 --- a/lib/matplotlib/tests/test_backend_pdf.py +++ b/lib/matplotlib/tests/test_backend_pdf.py @@ -107,3 +107,14 @@ def test_composite_image(): with PdfPages(io.BytesIO()) as pdf: fig.savefig(pdf, format="pdf") assert len(pdf._file.images.keys()) == 2 + +@image_comparison(baseline_images=['hatching_legend'], + extensions=['pdf']) +def test_hatching_legend(): + """Test for correct hatching on patches in legend""" + fig = plt.figure(figsize=(1,2)) + + a = plt.Rectangle([0,0], 0, 0, facecolor="green", hatch="XXXX") + b = plt.Rectangle([0,0], 0, 0, facecolor="blue", hatch="XXXX") + + fig.legend([a,b,a,b], ["","","",""]) From a182a76207f21c4176e7b1422e19753fcb2927bb Mon Sep 17 00:00:00 2001 From: James Pallister Date: Tue, 26 May 2015 12:05:15 +0100 Subject: [PATCH 3/3] Whitespace fixes for PEP8 and the correct baseline image --- .../test_backend_pdf/hatching_legend.pdf | Bin 2813 -> 2820 bytes lib/matplotlib/tests/test_backend_pdf.py | 9 +++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pdf/hatching_legend.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pdf/hatching_legend.pdf index 30987d5f6d247f2f0026a77850a63201b0b2f0c6..146d4dd92d4d97a442193839dbe684dd8fe6a25e 100644 GIT binary patch delta 472 zcmew>+9I}LFJrxT9+RPf%lFzYJIBlaw%Fg!NjNF0G{vVyO^2cL^<^HlcZoLyyr->6 zUm3Sj=H0=E4L#L+#Y=Wvvt}^(Sn}chNA8>Y4>A^XZ%nT9tY_GFwLI{;)Pc%XnZG)x zCVe%E3|ex?zr^H9>z9f?wWPMIpBcB$I^_4ixYKd!amMi5=Rf~^omp|Bb?q!MEb1zGioF`)c z%iCgBY*Mk0Ul@FQv4(E%Hx}>vvmCfAH6x!1mt`zyL(FJrwg*C7WUx9^s&egruL}>ALyawUamIl_V(aIq==? zPzBR5F;4$a@+Wpoy3aIW;lqd37S5ZDZ)l#lC+-vfQt*MozV;nq3^~5S?YV}075w|bY9XQ#v~ zPFuFe_(#eio^mN`vnR{dR9zmg?2IX0w%yov;>nvEdAII+;B~%swcu)j-v72PV#=;N zYeSa=++FSHHmr`6(l$w|e zV&x}gaTyva7$|@kMn+tgFhS$V51B+ZKVY(8V>K|bG%=Yh%elWqvmj3;m9 Qa^o~M;Zjv~^>^a}0GkV>dH?_b diff --git a/lib/matplotlib/tests/test_backend_pdf.py b/lib/matplotlib/tests/test_backend_pdf.py index 8f49b227f150..5527fd21c01b 100644 --- a/lib/matplotlib/tests/test_backend_pdf.py +++ b/lib/matplotlib/tests/test_backend_pdf.py @@ -108,13 +108,14 @@ def test_composite_image(): fig.savefig(pdf, format="pdf") assert len(pdf._file.images.keys()) == 2 + @image_comparison(baseline_images=['hatching_legend'], extensions=['pdf']) def test_hatching_legend(): """Test for correct hatching on patches in legend""" - fig = plt.figure(figsize=(1,2)) + fig = plt.figure(figsize=(1, 2)) - a = plt.Rectangle([0,0], 0, 0, facecolor="green", hatch="XXXX") - b = plt.Rectangle([0,0], 0, 0, facecolor="blue", hatch="XXXX") + a = plt.Rectangle([0, 0], 0, 0, facecolor="green", hatch="XXXX") + b = plt.Rectangle([0, 0], 0, 0, facecolor="blue", hatch="XXXX") - fig.legend([a,b,a,b], ["","","",""]) + fig.legend([a, b, a, b], ["", "", "", ""])