From 08e6552555b9c8c662950b7d960fcc63f6bb000d Mon Sep 17 00:00:00 2001 From: Ruth Comer <10599679+rcomer@users.noreply.github.com> Date: Sat, 19 Oct 2024 18:06:04 +0100 Subject: [PATCH] FIX: contourf hatches use multiple edgecolors --- lib/matplotlib/contour.py | 4 ++++ .../test_contour/contourf_hatch_colors.png | Bin 0 -> 19765 bytes lib/matplotlib/tests/test_contour.py | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_contour/contourf_hatch_colors.png diff --git a/lib/matplotlib/contour.py b/lib/matplotlib/contour.py index 05fbedef2c68..8af7f6a15e19 100644 --- a/lib/matplotlib/contour.py +++ b/lib/matplotlib/contour.py @@ -1259,12 +1259,16 @@ def draw(self, renderer): super().draw(renderer) return # In presence of hatching, draw contours one at a time. + edgecolors = self.get_edgecolors() + if edgecolors.size == 0: + edgecolors = ("none",) for idx in range(n_paths): with cbook._setattr_cm(self, _paths=[paths[idx]]), self._cm_set( hatch=self.hatches[idx % len(self.hatches)], array=[self.get_array()[idx]], linewidths=[self.get_linewidths()[idx % len(self.get_linewidths())]], linestyles=[self.get_linestyles()[idx % len(self.get_linestyles())]], + edgecolors=edgecolors[idx % len(edgecolors)], ): super().draw(renderer) diff --git a/lib/matplotlib/tests/baseline_images/test_contour/contourf_hatch_colors.png b/lib/matplotlib/tests/baseline_images/test_contour/contourf_hatch_colors.png new file mode 100644 index 0000000000000000000000000000000000000000..18d949773ded79b5e931e035032c7f0ee590cd6b GIT binary patch literal 19765 zcmeIa`9GBH8$Ld!DLiExEt1GGDA__;VpJj|o)+1cR7jyjS%)ZFsO&0~Qp(mM5(beL zC4?3=mh2V7U@*q_yzcQl@Av!r`M$n?!RLqPRXwkJ?z!&kKCkmU&f_@FiMH5h#P^rz zUpO3&&v=i)ejE-Tio?6aF}ScDL2p1763^o^w8P3}@zi*88N_*^}-^ zHuxPoZ&TLTAMexojvRA zqphrb>fetmd7W`p-WP8y3SYtNy~o-IhZAr{|8dR>^OM-#_#WxeEYuO zfw_b@xB<#e;dOEPdvZ1%6zwT{Dk>eD9dShJN{_JNvbio7pGE;1SzMVM zSX46g!=u1;J|J^o{+g8i=&qm-YWJS|56pdU`Wm}0OE1_4RvY!Ir;q}F;-1Fh2=LDp zTs%0O;99&O4!209@aKPhR<%Fdy!)C% z>eJz0BaU-lOTR62e~jsEpfy%Z1yZL2*Ry0=iYW6Q^Rpe)_N8m=vX?8BWhZ7ihlDs3 zRn0!I%(uFg5W>jO9=PFSv#|CDWg&QeJeB(CO`@DHy?%{H-`nJp`R~`aEg1KggmW*r zo}w(sQzvv5vfA@!;*Yy7>|B_mEco}*l$&B!kz4E6cy;KE+T}a4$Jfnvg-^g8S1aqG zFIa9<#X3|uJG{+z{AXWW2vuRBOF(pfu35t8S}tk5Zot8Zhl~EqHVhHC2Aw=T_rbr~ zUCDFS^Y3ZD#Am-2+Ao|lBCq=D%@}OHMRp9HY%2&^`0~a2{f7@H-e+joJUMRmkfx(b zCKnxc@ZYUqng6lecSJjux+{`@=;xb68)`^!0e#zG0()@w7MVI$8)jJ5ls(b35Z_)H zY!E3xE8O;j8T*Rrn7K-U|HS-k)9}r6?IRy=eTQc_&ZeEaQ6D={;`!ZD(UBeF;NRzU zcKl~DJj25?>?c8+C$pxdKFr*sw7gyC`Ef4QK6geg^NJqhRtu%!aS_G--6+*@w9_YH z^`D9-4636SwIF%h_d7lg0mc)7Q-kxgh4~iB?)w8)>beDOTf%P~dT43JnvRUZomCMD zeV3xxT4+yeWT{0sm9+@Tmk3{|%WAe{k>Kwd5*G}zyKM=VM9m~`x-@?}$lwwg(2-d8 z_|&(l8y$MI8uJTV_nMgd9g0?OH|o= zbm-lN&DfVi^GHgREBd5R#EMH%rtBVRKh@S#KT)u-LL#Vme*hn0#Wb_m>|d~UxH*wEyX`MlRCybox5m3~x6@6@ zJ*>6%uV~p`lsT_Rc2L`)!`npRshcBtlE&|a86>WHtF_Yz*DfDTy|>Nt(?Z#ljb-gs z_Y)SuH=#W_Aa{7GKKp&xl3n!Fl&TH2eOHRx zd`;7sYO|{;Lo}o7r4i3Xjyw%kmAQIu$4|zCLk5W~ZSGWk9(_4u9DA%+qQk6-Oy0sK zb`s-bM--jm!2(&NuN9=d1kvD_YL_Cac#wKr?>8+Tef&pbVrYZRd=oD{bpyV4zXm>< z{4$kkDi}sL$WG#`dEB&|p_pMvr;8Cba19>y#xpx}&F-=*^CNoqA4iW-RZq))1}o2Q zzQ>akb1^%iIjNz;M=+F-oyZ8!erM%3oFx8reow#eP8GY|xnXr#-9E6CjAg{IOXfm@ z9_n{zg81=QY^!ggE7@n7#BW+<#2I?>MtZcMh4V z=37C^*r~}atS=i{Ai9dOf6C?OdGE8ITUx8(oEl59@t4UPb@)#9)HLtK$0^B$wG46_ zMGBhj7ol^9^Ja%{5w1Q>-zGnrGPdfl*n_@--3y&T6X(>54h0`~I#id{#t^NFn_jww zSG_!wVDiO1d$f6_2}^Nqw!?RrJ(rV(BZl(FEOTmRu1n(IA*FJ1NbsZr?DfO<(@t9} ziL&@OJ;UsS!#((Yt*!b} zAIG%ufve4K)zNgOJ6{qkD!7aPR-(%tqpfjs=nW3Lbz=BQ#DpNl@^ER<^(s{; zCM=))f)r#akh3v~`S5H!PAHV`bR5~Z+|AEYE=8&JR>>Ov%6)`O9w$z0629PTw1MvG zJ3n|+F01q5Xz=KxTOCo=vy+neyT6uRZ98yaMpDE?9o~fgBfOu=iKTXjS@V$+^Lw61 zu#2mLU-H>ll_w>8AI-4h6{c8r(B=3R^!}7d&pGb(Er_t@UKeb|Z7OV8d&}TJQ&WwL zQyQ+lFprsN#oLhkCs~E=I;qHRFR<+x#9rS$j1D-%A@<&jTYpC` z)a;d`s6c$YX?hd!!!DL}@MS7vG$+rt7T#dhUVIaILB}T0c}jXm!oqjj%sR8oItgJ2 z`8Q6uLYt@eOPHp`#CX#-^nEjel;~VfUg0pqA}R0R(k-{UJ4|&q8P?IVr3NB}r8XhUdoGzzv&NR)pxH;9=dwkB~#7edC3w!u`nvVRo6%*FyenS|$ zxLoNY$*Z#M1ncf2_@b-W7pLQdgKy-e!j5jxM!} zT^OLvzxdEQIuy6gn%C&~CzCYhlbzAzy!2$15vLrlk**RCi8qy`?PWw+_U87gHWfHT zj3=QJpVm_rdcS%^R=qOOR2p*cdYh~eO%3f)E`XPjsQ)t3IQyt4?>TX^%m!=&joWZ1 zwXyVK`YnreBa-PRTfS9T}#HYBW= ze?DZ4!jdlDsC^h-GoPbu*nYa}G9tybV*c4`Gjk&{mke%w5^uFqukzJWqG8$b<9bIlDUqRRz9&$aYgW{ zcPXwW3&CRzm-yx)*>byP^kSr*J=gX45!qk!WjTg|Hc{8}=is=TvVGowE zonW-t_caDlEE#xH%zErVgfl(cfu-|bTQ&CU`M_|U*Mgr4Jynkz zR(I!cZR{FlSvEd~s-B8Yz{^PAV)Y{=*6hgNuOt+lu;Qm|=N(pct~YMSE5{4AwWr-7 z{~r>h7`7%_rP@MS>-HgJI+SdBz)a-Pk6z`i$fiN550A&9Id6`0?K+S1|K2`{N_0@) zw&oD4#tA=|J?P3cK;Ou2fvvBfP?}XCWN#ki)6eQvu7UG+ z3SyL;1HpReFj~L?C?|q9R)$qIWEtR0@|`0Y99UQMt^!W0-Khd}^~kplxH>%Y|@ESbBe6 zcpV?~l?|((fp>7}UKmsrtp$epY*%8|QEhfe(@Y#Cb5^DHq}&8Dn*YsO5b+>m!h-OM;;PB z_6Je?Qz`R0rH5BBBU2U?N!g`Nm+7fpDc*JuIw5jbWc4Wj?I*g2Ac~4AJ7p|e?^Tu_ zL(-Eg*0wq>T8k|sF1G&qV|3@24a~&1G-AJBard|1T?Xm4wc)d(6cwK8Wp%J}WzS0c z$aV)!hNzH8VP0O|UY`El5V%ZHN;DM3>%2RpydPUgS+soSkzvm!;PThfT~}oGt}E@- zW|W-zrf1HxY_l>x5pu)|TCbOd10nve9Z?zz z%#=ou{DmlXcuCw%87}6_1d81@-G%M+!#!dE0!^=Tvh-K0muo7~!O=6y{^0E#OqrQm_SHw9N5UZ()KZg_Ue7wVyq z8&f=Ne{`~UWFi^W3Are;f|k*&e;Cx+D;iKx;MTq7*Q%x~8@3eP#R8nxQM11$S;d3) zfr9||u&i@Fpkw1(1n={q06mo*9E5Uo@J(ZF!PfJy?aka}r0SwBNzD5nu>h zoB+)h^`#?tk{(Mkf0T6i>CH&vc=hFu;i0m|WJ)XJi^_T|hDN!`9K@F#4Xwg3 zz}TqjBRk{t^S<^T8IGbJb6hCj_nkuK+Jmz^td4_wztw7y+(WpexcQ{KwcSghA!*fP1Q_uZ*9?6?swzTtp zVa~?xK$h`#P3^6_y$}#7qRYimywyv?;{-jq<=z5H{KI_6Q1#`K!mVqGbh}m?MSgRm z_vz}Pytod&|G>L&IEB`F4URo;aqgsGr@slzJ7e&CZ_)-ruMT)3coi z%>7rH`3GI5s$15c&YN@j`AQOt<~#So07HrZxOmi1zcP+28ww8zUyiDUlK+UJSB~*t z(rg)@_((tUwf_z4A0}2rArU8nNnhq#tK;KFxX1Xy`lVh~L&547i4@9n*MxnW-|Hn^ zPxda$a99M##^l*%%Ddp3zTW3Yobs4zORVQo8VDbEY~f;2JuCk9T2UcUd|z+(0r|zs z_6a*0dhmLt>2j1aw*6VoM3Dv=i^r|io9GRME4Z`!5v*fqWxO5h#xj6CcIsSMBx=In zkoc;{q%7WE>VnqcfIGItKM?}W2P2dRP!b)+Fnd<7xo9u|T(qQ(FNh8y3-j0NzLw%; zL-`-<#RW&_8VBj3DvQBkOIok8;%JIWVznmPGuv8TY{wpRVJ%)rd`0ruhnoVa?6qBy z0OO82tXl>3qYto>VenOc<|U8b3=*HPQ0hZ>*j-&Sxq&H-DN+&6Em~26H54P7kA@bNyQ&Ui>n3nzAtMF`rp=1TtwSL51PA>E%5v8=VSC8Iy;K z`bxA)K*3oy%<_7ozOgp@9Oc|rcG=RsIPJBoLLcpJ)zr%jPxiL^%G})jcN94Xn#U<; z$mcd@hS}-?q`fHA?DMe>9CbFWS)}cM(OsVgbKQfRw%1rDqTq7nZHR(?mO)VIcQaXz zrJa^`s6J}tRl(mUQNz_XCF8v>2CMsf@MCFr7S6m=G-zFW>!!=q#|uJ|gqLj$?D}}B zL5Bhqn+{RnB!2Z7B7DU5On*YY&Pd z=Y6vUz*Mlcz2*@tWkWj7^GAjCKxSZ}jC<3M%3TYM_l=!SLTVWua3YDNK1SzfjKpp! zw}CqMG$Vts1);W|OS6;W^xZWHE(y5?^4OKPu`4y$M0-?L9!B%XK>xU{=h8?~Q$ zK}CCNCv^q)bG5hJtM70-akKCsGB@hq6FK;#yezbJO3~Sq+qRS6Zx_z*Cu~}W{W*5* zt&VFvG8y?6ALwzmo^8>0-(7N$hHgMZBbm2G79H&Jis1R5iGgZRaG!~-DEr!=?3*QCIf1ojHV3dX^2Jw0!AUms zX5dU8t#L1&PwoiHfSLxXi#p{t(?DzIBqH@)C>NKD}CI6x|@OhnTOQOjN5wJM_;~PetVtvQl z2u=xnhFz7@f8H5%#T>YImfrmmZT0I|eP9dyg_z^-l!YmO$+4GlxK@IVfs-D-ctCb{ zwmSR5p3Eybc`GD7)GWPP_S0T49m~D3RD)L3*~aoT_UMN4X9Nj2eeDXwQ)k=a0tRmS zl(>%mxJAi*t+vD^Dpx9KyV2~0*FfiOnxF4VxbDUN^D%3L$+&VGK?seY#5D%z&9jp$ z(c9dKsmbkocn1SRnWh`F~c z42ru2aeRnNiZOD!;P%&qnB#fY97Hp~Y6wI?rMpmp z*ZEVXHc_GtpiTxy^5hCs2-Z12Gk%U_yv>dh{D*9=e$gKb$6*fE3XY*B%9#%b(gHV6 zOlo`b`sj!dh4tltz#=aUm`*ZUQ_qd7UCtnw&YdQcEvBClW ze6oF4`R`|`jL$CfHwY$)hie}h9>^5LT7uoEhw3}Py4zMsj6b!wzN)1`t!CtDB|Hge z{=`)+T4iu=W9;5qY$9|KE-~0iE66)-<5VQ)J){vwlN`VxSC{6v}WZ9OG3@Ej82UYNq+LK*hTeXxw@#CT`UGPeBL@v#cJ z(?6$GZy6m}t9K(Dkq;9tKV>D^mu2N10a3Lp0b7Sl5KyIkUc3S^q>PxcJ`BwX3&a;* zV5(&}yzGDqxn4{UibhP(${Wgw`gxt)ITkGrj@q;6V}_mbrqM#yh}E z%!!5V-%420a5k?wdmv}EN>R`YNLnQC1`Wc`f}YXO!kfv+5_bEzL;g%EB6tI zW|s2kd`5U2KW@}tf^sjy4Q7P?#g@rp9Pl~|n3F`I9<8mTb8kL&JUi*1%b;;nPJS+? z3^w^1qFb-0L<8$S-{;7Vyw!08Jt#odtvJ$xw8gbQKgyHc{$g+*6l?zh3$XM+Qc4!6 zvEUStk)Y@6Z@hj%Vs-ubewXSBD9n(Cp|DQ?SwSZep?I|C=k=wil!m{o0U({s>r`86 z4BHK4z{i|C`Nb6b1FG+3;IcA6C85cM?L}>$5|{i%p|BRF;AJFyOkznA*d~xVfOeX^ z5Y+_x@fiOn$qT>~+UvMnbpU|SfC3Q$@`f$T_>VyR@%6v9!8@^&3+0u77L=Ln-Po)y zf5&J0)48j+I?@Q23SMI{1R9UjE+#X|MXlKz`_5)|Q}0xzb~P#+LU9|C9jA`}=UhRr~OF zhf5=bZy7@AL)g9r(u8t8)AV6Eaq1W+6kC8+a^9VNa5KRr8j_+mR=DfJbKXg@^K<1M z0k5QIuz~CKUuCI5_7I7lymCikb5959An^ZbzH9I?q{}#sAmGtQoXDuVa(3RaeEF2w zn2(Q7MrLMVFg|U}pD4e|mbXE~EQc9_mU}wb`>Zw8!umj!hxrk6+p#j3vPDfTXT1*a zwO*TWccDXhEV)M=Bs&c9V#PXjjrRk%Toho5Lf8H(#$Dy1&yQSO7ba&%ing(JgB`d{ zAxUAUdf#UI6#tu0=D%_jh|(hXB5UsHHLx>g_V_owb3l^rTVk$cZ=$|5D4wD2jq$ye z|M0yHG6+`0liiuqryJIv;}3pcYTU(Q(Ff(=O@(h=V)2(6{_c1}Ebo8gt-Vulb1_jDbTo2DT>j3ga`7}&;`xI2pZ zQ{H|jimyC?$)ku5i%Yn=4)hJgoLR%c@}z7jGJ zq=DU@ydBXHI_CxY?<9M#TRhqo4b_5SmaRhae34GSnv;0`({}-O4OMd|b)E$XogeDa zp#AxQ&-%^qasUeK8PI$>RogfM1*Z+9Ot@=Ru&z5`yE1>I0t5=GLj&-~I6H~VCzDZ& zwc}8VIjor|@L+uk)BM2&acG}pL*tx@Zf&}}NSOu^yNE#(KBJ!8HsEtdIqKxMDgWFs zE>rU*0%Dq7>U=Wnd=PeLCr8v;s~;AY&;C-sV(jDttf)|!rLBR z<`-WjoO(MU1|1G)2#><1f--ujLhj><9^J5O{*F$wm0@q@@R+C{)SF`Kdt~VGt&a1K zPGz~dxo4E4R!D*J(QCeCba~^84Yh&z5mY|D@H$<9zW5WSt7O`htIxXqH7O?WJ49xp zNri94;UDT_ZxxC_3mVg9w~Xh8QJMAU6wLAIxGh}22=I#X;1y9!&o8zTC=ZW&@=9z! ze}#GAJYBAjMyz7AkdF}uL!mK$AY6?;@&>9EqOJktZg%`o6Q0xCGUdvfu#>gctf;#c zcpgq*33uRjyu`;)}}Z5mqoQ9Xj5>t^P% z)#;p0_|sbKJ;d@P?d1WKuxH?N#i(3*2N)$vP()tV+a3V--cF{pz2+3Kzeb!M4uKv6 zyoEY&3%x*39z*)0of#r>a|Gye#x(X6?YM*O^YNwaH7-c2oF=H$$b3BELX~_q*_i@_DQcQk5jB&A>J*eGP!%GX zrsyn*2kn!Xd7ZmhGVm5scy8adi?C~l3cDO>|DyoOAt6Q*G;Z>2&Iqr*Q0Ts8OH^j4S?fH@s+vcQ z2{!gd2r+p}eRBKjHwMRkC^{S0IXcl(nM3B32iy`tD#NIqe?Rr>%eO&V6L4Jx-)eY4 zIEx05b-5}FCEqtMNSmXX%T?G;f}tABaB|t1!6pNz!1Ac-vplQgszq++$vb{{1g0Q} zo3QSTjEuJtPB*i}_phY83Q^uWFa5Q_n#<9@FBuuY7*uvgSR=XhC*q*nrnId#l@jAO z0(p$Vw3b&KwgE`#RVu>OHugU6+h$W2#swlBJkE%|hQJ8~7y|qRR6TfG?oM{)X`qs> zPNepOmT)B#x6jPXy*1Y?19<7us>zOYN>!fw1~`kc5dQ(9B7xAt4T%le))HH*uau~w zEV&g43&Pc3SG=NC1<##*uW{Iwot~QuNSWsWPFF8`k}R)6i{} zrTmt}c@zgs4&P!1j#f^~q$hi86QZm8AwGr#E0|->w>N&ojwY}YJxx;Vul0X@-tib; z)f=z#w76JhCB^-ey`b~@lfEVVDV=~QPN-iD;8%*OyIY8=Ysq>_ekdrgJz(1tUq`uS zV~a?ua_Hea0Tgihi0x`BoE9$jjpH_e1$$&eJM4Vo-m=Ip0kB!c*7i`@eyMwR%BbYJ zWz==}V4V2N6zs@@7JisRG+(P)YG(-C0Whkd0e%s@td-FMtPWtqBqR=7rgD@WSAbzp z_@9;AahpPm1_-Sdlbb+eVm`5&^Gm?}vRDULU;m+iP}+2t+wC{7)AvgDn4hZf9Q2h^ zu}cKygtD66A&?)szAQhq6{vG`I{TtDqEhdx!I>&H3y!Pak`QyXHa>StkfxCXLCQ`|O=n9{+azt(F(HcO zmT2A6Jp@djIfs+YK;|i%;Hc`pceJ)?3CfAVlG{QE#&v)DKVV$PywI6MK}vg+4ED<|el^;G@c`i%o1?zodN9K<*)madfwm10STfN26l_XXui#lu#CH8qib>ZqC zZ(_-L&oNR`IkCDZ#Mk9GQ9jyje;G!e<)Zee{-@U#e6f*Xz2ogXZX@9^OPZ87n|bY4 zQSb>`RSU)Oe)Gz&THwyh1Z`Et4wLj^nF^PH&eJ|zod}#~H0m-QnvZnFDrL03rJYxv zn3Mt#t_woP5K2)Pz565v$@{XQl@?opEwBWiNP(Ui-ZAjhAy`mc73oHlV#X^FoIu*@ z!K@Clls>`G^$&@Q?wYm+o{EtV6jjFL-$EiT>Tx|ISg^iD!5T#!x8l7H9CGLTO5PuN7WYgJ|@P)5!k7PjsWJ5uuNvUENvtdtNFgd*a83&&`JbP>!yO) z;kYQYIFdJe>spSbccd@7xKtM$`7Pz-`TURGR4Z z1*K1j@vku~EkyC;sZP;YMF}65Dn0>O)KWrv?3(G1w-~GTbe`T|y6|1n@Icfevo^%D z{rp&V|G+>rxu}zWX>(ivOV`-q`X|S>x}1FKm!v@2mx9;xVPL zr)w$hL(8QODMx}wWw^Kg%FpRX7_sKrGJ(f>$o~*)|6;w7S)S)oJ7dU7VJciFcc;?j z+DZ|(Kj}-9->AmN>MyjHz8416jkqJ?ysMZ!+Lg?n@)p{<5N5Z)!r8$lZho=*eZY_K zZe%+lEN~S6*_TC9s$}e+@8Vw2myB%vcfZ%#z%m55j zl@sGhSk(qpODxPn84w&d0KLPH0O>(%f}-uGXR0Z64C&BxsApr*=0UY{%ymDo0wbE1X2keM|9Z0A?y~dzrX97y}2pnHKx8tav-?MoMgF43! z9)0r?5cz;ygcU2|W9-;JFi@+}X``Hbz zh0HA71~f-M)&8W2)TE_{kXgyx@ zvyZ=; z5mI_1G?&?Zy)qULw(?z;%!nDsoB%yr_jU8!_tvgLVr=k?`amP*JY75Z7b@`4GH8atH*5RuN9I?E;u?scWD!eOf14PTt z(~o#@5TipB5ZQpPnldZXvAi_^E#l2(dS!v1k>s z1+;{ zJ1BVT1;Y#nn-5+R_%G&qlaSTG&jdJWH&^lj>n1Ns2{(iN{T){uLiJmH=fsox5X^t+`Dqod}+Mc{Kre)F7 zETK?4ygRfqWp!EVvo+0jD<17E6S*co+clVm!MU-n!Lp=EQsc#he!);aN%o2krs?H! zlxlD7?keLpY5_niSc%l0(sEx&X z1SdZBOxD8l#8Fe0b@&=@cmxBd?LzYDf}lHJ`Ec4Mb_*om?jxj5F{Lm~`C02~vkmP0 z)1^fqH}(&tdaKG*$4W*smR>#FQAh&m2b4vg)LpeH>`{@_canB^XZ#?krzwLmcoUfB zzPHni!<5PCz4#@N&%U^K!S;{Te1BoOpbJAPYlE@&shC)}hHG$bPt&H^&U$2{a{4S} z#Q@n8=@-BVf$ZtM0lo`2HdAco*L`J4c#;B_90Vd5FwN4|`gzjJe;L+Yjgqx6q@%zd8;>CE&p-c!%sWanIUo{)eL%|MqM?>zd^gykTVw_@*#7 zLOJ9&nU8KBU=Dvl+AeN}pfbYhnL8hPu{9U(-5;6e7!DK~hdmDnfhG2rq z`-~C-V)9W|b#_5+iM1=L^YRk*Tzl5XO09L`fsa7hAH?)=V62iPE}%97)8y=sUVc;s zcetqP=dY1(rC#q@PXed^fVVh8kishkuE)#OpL5(Tc%U+H<_vtY9siW|HW>hdOTK%! z+8sFS7o%0Ctd051b)V{?W~swm7#3>Q$PdLVdRyFxm^y`ZE2<|xyil9YdOlLPT&-vo zR)~>H_gg)(a?T2dU1JP?Ey4T^*Z=YKd=F$ak6_=`SIMo?bZ2_$RtRel8-&9QoW2;< z@98!?U=8VDboq)UqsVUr#mZPafKgCe8Zlx3Hc2Y?liw&mpA}kc3KDW}V+!89A;O?< z2~M})Bd@(LXt}@9pc#X-sK&?j_CkX)8;kq7<72_MgzvO{+ruqqS!6x zedKO|O>2)ul#jhTOi*&$tVvKTcB?ikajFiQt-1aLH65Cfb@RR5!lOk*2i78dBgb+d=R zzs1ZnrT>^|2G6YDoJ=cjWjj3mHR48t#9oNy+;=Oruxi1H9*KTsvQ+Ao3_ z#$gk{N8Nl$O9+(EW8qw70h6Qx%EIq&rTj3`1Gdh~U?EorFF6cu8FZO#o3|@HbZs%5ku_8lHBFtO5u;zQ#P~Co|hi#YpIQY^BPnw&v z_^@zr0eB9~O1UU^s4e+h4zHr}!tXa^z~Eg)hmf~?(1S%PeBM8d2=U1w7lPi@;IUnf zwx@?zHm@AS*s+=I&QgNDz>Q~nDRe!>j4?1ra#!Q@jtDp{rM_b>3HFx5fE6q_>e14x z0gv#<@gh$*Vdg|dV8!$d<6$xqh$wK~ps5=ehm?&*K5SsPjkEpZ+&4S`TV(bqgmp8r zt#!MAe`UTA+-`>8XfWSSf7JLgr@;&lniFb&OC!ExLBu46MxRDs0+XA_OcSmDG8Gx? z7yVE95#I$t<;>agPY7f7nd0UK-!b&kxBaZBbn(Unp&Pxiwq8vz;v#Yk*q*L$1Qh`L zvh3Oz>Qij;D-Ky3ehu)FD^E)|-|=pu!+-&q0W&O#oOOtXMn7A$G6oQB5xb=x6a(%U zDCt-aYsH(o3(i%%&3A!#rC2QKVqTh)4Bz#e-Fr;RqW+aI%j^CrCtmS3@U1+P}I(E!JHg5IJ?I`pBGZZTw&6j{NDp;$Q1grlqbnB(g|6c ziUvT0ay(sstA(a>P`QfvEk+k|U~hg=@NePtj$w{LytHV<2I%gsvlaX)F_2=xv;*d| zQep_b-uEt*Tw4$Qr#u7#MzOZ}vW#C+6TE^)ieR2krntNc7TF96HPpF1$OE!k!3hx8 zeXg|o6Di1vrO3WUGg^=MfiYF!2ii(JF!PCTBqez!pivUJU0#X!en+x$6)>1hSk9To znvJS|2`dqI06YmW)nNA37V zV3x42)_{If50YHuj36l^~5*Asib$TEtpMa+HANCgY-6w^scYrUT3)wY- z;;=z4m{?2&UG5}F4ABI0T1V`7)lh<~6AMM1&llG$68i%WiA_|(zF7;ompP-?w!Fd+ zo!uKCb4F5_k#$+MvE(pXFtNNIRk7Uu(408BG9jQLzpU<#-sIz6pZq8^n&7 zg4b?DYv_G3PKbO4Fp&U?zx>Tpw;j6X(FKsgFGfWg=jbnY?9>v5(QkVK43sY+X?^q#xp(B^DBFr+&uUk zk0SkZ4CXW2Cd$$Tb2fhRVVs7;2zJ1LO}cy)?AZ~uH3k{rE;v=i{p2+wbGm`d*>rA) zj5!$XlLQ9#I0}Aw_IqOQl0YyizyrS50T^ntSnkI0AMPxdf?h}vEITt`Cn7?io{xvg ziF5=*d8((%f-da&8$dziw~j>A;t8Dq7FQDakm)mG!RL=7OO8mU{CK1O8gvyi@ebnX z)r$DA10V?p{|J`Cu8a^1m8}2;(-hfWu@8&_26(bF2DD{aA9ZWO5#rBc<4{=`(S|wigUqm#SAbj)1 zpK_H6n{Hz5xr z{HVe@^j#&BMP~FIZXRFIU_^Hq#*tmnd@6$6c8no62p|iP^u*fgPeU!Gy5W9dG z4bVv1xj#W=jA^lfcpdg$gud2}a{Wq`8eI;vhA;@RgAl*Qhww@S`S6WeN0-Co5+Pd{ zUz`QwHez&FXnw*G!I3RwgE?kZjasuUJ~V#{&q2f%FV|;B|5kmD(Es}SGT8(fN&L%2 zGdM7HSYgQU;2{Fy5e$19=>1ftN4c7rI1be@nlDpWwYFqNys;v= zSVl_a8vMRQB%1n2QXaV9dw~Z9%vHBp&OrG$jIp_9#m!v?B@ztQnQ0schbwOf{CWe# zYsd)~)P~s8s>FSFL>N0^WRr;|I^P362kki(LNJtl;tY0KL)Os{2{N1hB)ucL`aF2P z`D-|h;(Z`qp+ZaVH$%p^hsyL)_g2~9KR&>nYP8ol7otgNXOOQ^Pf>UY`)cR=DBw^B z1ojkcNJ<5xMVSAC!)Nbv>}w{od`ILnzwTOcXB8mB+ANqhPFqO3bn*Y-ShEAz` zP|CQ-G-iUbqps`E3yHy5BmGz~c5=U93w_LOvtPiuwVqh7GqIo{=Wb(^Ag=r5O{@Ty zRc&MAWpD~MPbR>RJ)J=2E4T0EzV-_uH#gu+_n710!UqXKKc&Ij*KvE^Q7~9_+qQc{ zL++K3=$fmta+I0&jOEk>cGtOPi8sqe3rc^qz|X+I*^^5-JHLc^6g6AVPFnX*wmm#N zA<>^{RdQk#H8vA2S7zzWhSPRaHam!o9*R0|&JVvuwQ=#csItS4y-OLYn)~z4etC{P zO9@>_9h(~z2w5{2%@$0rsu9f&c&j literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_contour.py b/lib/matplotlib/tests/test_contour.py index 8ccff360a51a..e0ea82973af7 100644 --- a/lib/matplotlib/tests/test_contour.py +++ b/lib/matplotlib/tests/test_contour.py @@ -171,6 +171,14 @@ def test_given_colors_levels_and_extends(): plt.colorbar(c, ax=ax) +@image_comparison(['contourf_hatch_colors'], + remove_text=True, style='mpl20', extensions=['png']) +def test_hatch_colors(): + fig, ax = plt.subplots() + cf = ax.contourf([[0, 1], [1, 2]], hatches=['-', '/', '\\', '//'], cmap='gray') + cf.set_edgecolors(["blue", "grey", "yellow", "red"]) + + @pytest.mark.parametrize('color, extend', [('darkred', 'neither'), ('darkred', 'both'), (('r', 0.5), 'neither'),