From 3fee7584e2f03049f4dec0ccdf4055cb0e38e05b Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Mon, 3 Oct 2022 20:13:14 +0200 Subject: [PATCH 1/4] Add facecolor to axisline style --- lib/mpl_toolkits/axisartist/axisline_style.py | 52 ++++++++++++++++--- .../axisartist/tests/test_axislines.py | 29 ++++++++++- 2 files changed, 73 insertions(+), 8 deletions(-) diff --git a/lib/mpl_toolkits/axisartist/axisline_style.py b/lib/mpl_toolkits/axisartist/axisline_style.py index 31c8a8ecf384..43f04da611d8 100644 --- a/lib/mpl_toolkits/axisartist/axisline_style.py +++ b/lib/mpl_toolkits/axisartist/axisline_style.py @@ -1,10 +1,14 @@ +""" +Provides classes to style the axis lines. +""" import math import numpy as np +import matplotlib as mpl from matplotlib.patches import _Style, FancyArrowPatch -from matplotlib.transforms import IdentityTransform from matplotlib.path import Path +from matplotlib.transforms import IdentityTransform class _FancyAxislineStyle: @@ -54,10 +58,10 @@ def set_path(self, path): def draw(self, renderer): """ Draw the axis line. - 1) transform the path to the display coordinate. - 2) extend the path to make a room for arrow - 3) update the path of the FancyArrowPatch. - 4) draw + 1) Transform the path to the display coordinate. + 2) Extend the path to make a room for arrow. + 3) Update the path of the FancyArrowPatch. + 4) Draw. """ path_in_disp = self._line_transform.transform_path(self._line_path) mutation_size = self.get_mutation_scale() # line_mutation_scale() @@ -67,9 +71,15 @@ def draw(self, renderer): FancyArrowPatch.draw(self, renderer) class FilledArrow(SimpleArrow): - """The artist class that will be returned for SimpleArrow style.""" + """The artist class that will be returned for FilledArrow style.""" _ARROW_STYLE = "-|>" + def __init__(self, axis_artist, line_path, transform, + line_mutation_scale, facecolor): + super().__init__(axis_artist, line_path, transform, + line_mutation_scale) + self.set_facecolor(facecolor) + class AxislineStyle(_Style): """ @@ -131,7 +141,6 @@ def __init__(self, size=1): super().__init__() def new_line(self, axis_artist, transform): - linepath = Path([(0, 0), (0, 1)]) axisline = self.ArrowAxisClass(axis_artist, linepath, transform, line_mutation_scale=self.size) @@ -140,6 +149,35 @@ def new_line(self, axis_artist, transform): _style_list["->"] = SimpleArrow class FilledArrow(SimpleArrow): + """ + An arrow with a filled head. + """ + ArrowAxisClass = _FancyAxislineStyle.FilledArrow + def __init__(self, size=1, facecolor=None): + """ + Parameters + ---------- + size : float + Size of the arrow as a fraction of the ticklabel size. + facecolor : color, default: :rc:`axes.edgecolor` + Fill color. + + .. versionadded:: 3.7 + """ + + if facecolor is None: + facecolor = mpl.rcParams['axes.edgecolor'] + self.size = size + self._facecolor = facecolor + super().__init__(size=size) + + def new_line(self, axis_artist, transform): + linepath = Path([(0, 0), (0, 1)]) + axisline = self.ArrowAxisClass(axis_artist, linepath, transform, + line_mutation_scale=self.size, + facecolor=self._facecolor) + return axisline + _style_list["-|>"] = FilledArrow diff --git a/lib/mpl_toolkits/axisartist/tests/test_axislines.py b/lib/mpl_toolkits/axisartist/tests/test_axislines.py index 7743cb35aa3b..16e35967977e 100644 --- a/lib/mpl_toolkits/axisartist/tests/test_axislines.py +++ b/lib/mpl_toolkits/axisartist/tests/test_axislines.py @@ -3,7 +3,7 @@ from matplotlib.testing.decorators import image_comparison from matplotlib.transforms import IdentityTransform -from mpl_toolkits.axisartist.axislines import SubplotZero, Subplot +from mpl_toolkits.axisartist.axislines import AxesZero, SubplotZero, Subplot from mpl_toolkits.axisartist import Axes, SubplotHost @@ -90,3 +90,30 @@ def test_ParasiteAxesAuxTrans(): ax1.set_ylim((0, 5)) ax2.contour(xx, yy, data, colors='k') + + +@image_comparison(['axisline_style.png'], remove_text=True, style='mpl20') +def test_axisline_style(): + fig = plt.figure(figsize=(2, 2)) + ax = fig.add_subplot(axes_class=AxesZero) + ax.axis["xzero"].set_axisline_style("-|>") + ax.axis["xzero"].set_visible(True) + ax.axis["yzero"].set_axisline_style("->") + ax.axis["yzero"].set_visible(True) + + for direction in ("left", "right", "bottom", "top"): + ax.axis[direction].set_visible(False) + + +@image_comparison(['axisline_style_size_color.png'], remove_text=True, + style='mpl20') +def test_axisline_style_size_color(): + fig = plt.figure(figsize=(2, 2)) + ax = fig.add_subplot(axes_class=AxesZero) + ax.axis["xzero"].set_axisline_style("-|>", size=2.0, facecolor='r') + ax.axis["xzero"].set_visible(True) + ax.axis["yzero"].set_axisline_style("->, size=1.5") + ax.axis["yzero"].set_visible(True) + + for direction in ("left", "right", "bottom", "top"): + ax.axis[direction].set_visible(False) From be490dbae1952907284843866d7f6982051ea9ec Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Thu, 24 Nov 2022 18:16:51 +0100 Subject: [PATCH 2/4] Fix bbox for axisline style Co-authored-by: Jae-Joon Lee --- lib/mpl_toolkits/axisartist/axis_artist.py | 6 ++++++ lib/mpl_toolkits/axisartist/axisline_style.py | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/mpl_toolkits/axisartist/axis_artist.py b/lib/mpl_toolkits/axisartist/axis_artist.py index 08bb73b08e11..74df999ef24e 100644 --- a/lib/mpl_toolkits/axisartist/axis_artist.py +++ b/lib/mpl_toolkits/axisartist/axis_artist.py @@ -1044,11 +1044,17 @@ def get_tightbbox(self, renderer=None): self._axis_artist_helper.update_lim(self.axes) self._update_ticks(renderer) self._update_label(renderer) + + self.line.set_path(self._axis_artist_helper.get_line(self.axes)) + if self.get_axisline_style() is not None: + self.line.set_line_mutation_scale(self.major_ticklabels.get_size()) + bb = [ *self.major_ticklabels.get_window_extents(renderer), *self.minor_ticklabels.get_window_extents(renderer), self.label.get_window_extent(renderer), self.offsetText.get_window_extent(renderer), + self.line.get_window_extent(renderer), ] bb = [b for b in bb if b and (b.width != 0 or b.height != 0)] if bb: diff --git a/lib/mpl_toolkits/axisartist/axisline_style.py b/lib/mpl_toolkits/axisartist/axisline_style.py index 43f04da611d8..5d5e1723fb12 100644 --- a/lib/mpl_toolkits/axisartist/axisline_style.py +++ b/lib/mpl_toolkits/axisartist/axisline_style.py @@ -70,6 +70,15 @@ def draw(self, renderer): self._path_original = extended_path FancyArrowPatch.draw(self, renderer) + def get_window_extent(self, renderer=None): + + path_in_disp = self._line_transform.transform_path(self._line_path) + mutation_size = self.get_mutation_scale() # line_mutation_scale() + extended_path = self._extend_path(path_in_disp, + mutation_size=mutation_size) + self._path_original = extended_path + return FancyArrowPatch.get_window_extent(self, renderer) + class FilledArrow(SimpleArrow): """The artist class that will be returned for FilledArrow style.""" _ARROW_STYLE = "-|>" From a1c3956573ca1d9caefd71185779f18d644c1114 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Thu, 24 Nov 2022 18:35:18 +0100 Subject: [PATCH 3/4] Add test and images --- .../test_axislines/axisline_style.png | Bin 0 -> 1323 bytes .../axisline_style_size_color.png | Bin 0 -> 1521 bytes .../test_axislines/axisline_style_tight.png | Bin 0 -> 1876 bytes .../axisartist/tests/test_axislines.py | 36 ++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/axisline_style.png create mode 100644 lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/axisline_style_size_color.png create mode 100644 lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/axisline_style_tight.png diff --git a/lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/axisline_style.png b/lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/axisline_style.png new file mode 100644 index 0000000000000000000000000000000000000000..31c194bd8af6102e274490c932eb58d51b225f14 GIT binary patch literal 1323 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yg_pQSlmzFem6RtIr84*?mK5aV zm*iw7DU_ua6=&w>8S9zp8R(^?mYEnES!k!HrJ5&OrluGto9Lw&85kKE8XB4CC}fnB z6ck(O>*vC?>*W`v>mRbnY5`ioS>O>_%)r2(2*Qjj?3ZUUFtAj4x;TbZ%z1lvW0pv) z#PNsb4~w^V-pa~OmhK5XlEN$|cI}?iq}?4$KFIB1cz@6>T{(kG`PR)FT-&53+;zF` z#KR?DpY+A2$A-UUgW?%$o!^h&=$xLj^Jb2j_JjJf^S^N(xbLGNz`?@Q=zxow#a>iU z5WvpPzV^6-aPivx@9KVkdppZ-`PUyGA5TkO(78<8<9g}W7Z(>-eR|?)Tk~VXQ;m#8 zFS(4QdSCth{r&5+v$Lb3qE?CP$8C{f^)-oh+_i4?$BLNOuV06TZr#2;JofrlDRz*! z+v335KR-6g*;E8vUmw4Ib@=*gOTDMN9GZD4h4tpmn=65uqNAft&CSC@LxH+Y<@#U0 zyu4i3%}LmoNs_O9>&A_N9gdUs`hEVdBUtz;vMwV^%4Im44c(fCthk%kDyRBK?z2j@#z1#W0 zyLZ$v6PWy<9?z*~XaqXCU?Lyx^oZ~tcBfvjneejY*X8`abfcM9u3ZcBRhxX-ZmRL( zqs3|y_FqXcT3P-59p@AAKR@QYefRF#xpU|8tDc{qfBn|2Tb<4?-`?A^K7Rkdmmd=hRvb*YaQ%mIdVT%=RjcCmR)unN zb1$zkOF!Iy{^oN3`KwmF`uzNSXz15BH#bK`N3VYR^y#Zz>(0%!E?<*;?rhrT$k~_I zE*9Qh_}J~V;0Nz}d#l5z>&M$&`)|g-8S9zp8R(^?mYEnES!k!HrJ5&OrluGto9Lw&85kKE8XB4CC}fnB z6ck(O>*vC?>*W`v>mRbnY5`ioS>O>_%)r2(2*Qjj?3ZUUFt9p!x;TbZ%z1lvWA>Cv zx#J(-&rsc|5l&oV9G_(W6JJ{{AZ6Tk&zxvuDq;YHRoQE?r={ z)^|eP{&;>ln-x!=K3%n{>dTA3ufP9po7Nn*#mI5n^5f5*rQO|Ax!G^NU97s_oE6IM zeH|^eOQ&*fvbC++8&_&Ich#z>xVUv!uZA{mSl?6A^rxz7&HDA%A0O|xe`Bu~zc0qv z*jOp?zQj+Ko4HjXp+F6)aE`7JZ?E100Lhk03AOCXW+RKtx*VaaVeRFejpg#9niAn`={kR_c_hq}UzAba# ztFz@$eOL=Hyn6m9UweP^&Yd;p`S)rnY)nleZ{W=Fa{5;l`H)dx>a;%a<>k0$sfBX@W}5B}LTWCy#gFBfEgbKL)1b z@(vGvFmnuIQ{TPgYuvrt`N6w)0y}nFvzWak&%gY?6qsx0@K*mty{mY zj6bz+;=RppZ{Pd({kVK~W@hI3g&a?efl{I2>*GXExZgNk{q6n34g1!w`v2BYM1G@1 zfK_Pe!d2J4OLRF{O!y{s>c+dXzrVb^EZeWHuAW^~R1|aiz4h$bvqM9_J~=sg*1UQD zj;v3s_jrHv*s){l&fnyF`lle`|C&|#*RN$|X0H5aWgq|l)%Vr2rrFl~*sxM-`s>X* z>Q-gVie2|T^z8lBv-InK?$uv43+NQnxyv$VW!=1WD{61`_q^lZeFToZ1ZLvWr>Ca= zTDj`qm(}mhL%;T~`t|L?!m3aIYR{fMckTN9n&9;F^VTkQ@9%rAeC^MlKNiy(?|=RC z^RsOK_QNlHeXcxyxIygM^X#X)-)9vT79M|pb4l?6lhCiVp=W`T_g7^-J2NvXGIHfV ze)~UaeX9)fE8S9zp8R(^?mYEnE8)&B+n^85kKE8XB4CC}fnB z6ck(O>*vC?>*W`v>tA}s&;zuBv%n*=n1O*m5ri36*e}myU|?J9>EaktG3V`F-|Q*j zGHoBNCzovM{2008id!#76LZ+=rfE@2Ih@R$n&JWr8b{lfC1C_W?Br z*@EKDa$~$*Hx)ljQkh*Sw2a%f(c{nTnRB)u-&v<%wAn)DLU(mbkAM8`yLsFPrfIFz zXL!=%z`)$dz{bSL!@?xN!D1l5k)R-Oz(Jv*5m~}Z@Wk!y`CB(_n)FNRh2u^3OIce> z{`@HH?df@Ob#?g4_04jVYZbV;xusu!{PFSek?oG_U!MNS9lSQoyPaSD+KU$}! zTwd<~`sU{JmFrvOCVg$v(b0MF_4V~t*I!Rs^8Eb#?95Efk83Y@Z;BPzE~oB4@5+%Q zEq-$>7CN`{W&Z#7x9YeKj*h z9Zhbse%kr9AVToSlu(8EDE@X)N1aI4PfNi z|Lw=YYdC7Uq&!}L4ErHuI^hDyun($H3L8O&J#gOQkhB(LSi45!kvO1}5Bj-ss(h=m zSi@1KRiUsFq-cZiL1xdbAZN|xkn(s1GO0v6Lt!Pz$rsipG(On`lFMV^R+$c#Q}$5U z2{Lm*up`sST##4ievd%2=-%q@d5^z7c(8zton81INBr&}-4i>D zpKq!D{;oIP*w}dG`j+)EE5%X@3j>e$$=$B74xf&JbI^Aq{Qt((Gux+6L$EQGz-2ogdKQ*WL0@c-s zddUG*)VEG*4eD~Zx4(Y>%kM^+X0vydzMeMgY}%{UB|5uzi+2Iluw2VAGqtsydp>>> zUrP0Nr;ARSt_laHak28ZIt0|UHnj$=n*Xf!`Gv{9XoBzG^)s>a&`rc%3zn!~&I?scX zlhv)NzvaBjKG5E^WWLH@i5GuNJx@>iH|a~Ejn>qzdwVJu+g5)osfp2KnrP>;Y1_7K zFZUYhaG34>@R`+gU-l3FC&?0jz5hn#uX+9GX!olBQP&%p*+WEH`Q&VFT-~_zXGiI? zGc&J*H?aR@{#(cYN8;FlOAXhgUrX&bTDNkgrmSVrk<%ZSa!EKN2kVnB|E_GOS_shRB$ z1vno4_Lush{vIR{ay5U|tLT@f?Rb`(*stkWe;8N-hl;p<1L|aw_~E9At)xdwc<6P* a5Bbt1ab>^ntW5#dVGN$GelF{r5}E+!Z3U+Q literal 0 HcmV?d00001 diff --git a/lib/mpl_toolkits/axisartist/tests/test_axislines.py b/lib/mpl_toolkits/axisartist/tests/test_axislines.py index 16e35967977e..09fc1a540b0d 100644 --- a/lib/mpl_toolkits/axisartist/tests/test_axislines.py +++ b/lib/mpl_toolkits/axisartist/tests/test_axislines.py @@ -117,3 +117,39 @@ def test_axisline_style_size_color(): for direction in ("left", "right", "bottom", "top"): ax.axis[direction].set_visible(False) + + +@image_comparison(['axisline_style_tight.png'], remove_text=True, + style='mpl20') +def test_axisline_style_tight(): + fig = plt.figure(figsize=(2, 2)) + ax = fig.add_subplot(axes_class=AxesZero) + ax.axis["xzero"].set_axisline_style("-|>", size=5, facecolor='g') + ax.axis["xzero"].set_visible(True) + ax.axis["yzero"].set_axisline_style("->, size=8") + ax.axis["yzero"].set_visible(True) + + for direction in ("left", "right", "bottom", "top"): + ax.axis[direction].set_visible(False) + + fig.tight_layout() + + +@image_comparison(['subplotzero_ylabel.png'], style='mpl20') +def test_subplotzero_ylabel(): + fig = plt.figure() + ax = SubplotZero(fig, 111) + _ = fig.add_subplot(ax) + + for direction in ["xzero", "yzero"]: + ax.axis[direction].set_visible(True) + ax.axis[direction].set_axisline_style("->") + # Set outward ticks + ax.axis[direction].major_ticks.set_tick_out(True) + ax.axis[direction].minor_ticks.set_tick_out(True) + + ax.axis["yzero"].set_axis_direction("left") + + plt.plot([0, 1], [0, 1], c="blue", lw=2) + plt.xlabel('x') + plt.ylabel('y') From 5d163cd6577c916a12556463cc718db5ecd3f3f0 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Thu, 24 Nov 2022 18:51:41 +0100 Subject: [PATCH 4/4] Add test for #7617 --- lib/mpl_toolkits/axisartist/axisline_style.py | 1 + .../test_axislines/subplotzero_ylabel.png | Bin 0 -> 6872 bytes .../axisartist/tests/test_axislines.py | 19 +++++++----------- 3 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/subplotzero_ylabel.png diff --git a/lib/mpl_toolkits/axisartist/axisline_style.py b/lib/mpl_toolkits/axisartist/axisline_style.py index 5d5e1723fb12..5ae188021bb8 100644 --- a/lib/mpl_toolkits/axisartist/axisline_style.py +++ b/lib/mpl_toolkits/axisartist/axisline_style.py @@ -150,6 +150,7 @@ def __init__(self, size=1): super().__init__() def new_line(self, axis_artist, transform): + linepath = Path([(0, 0), (0, 1)]) axisline = self.ArrowAxisClass(axis_artist, linepath, transform, line_mutation_scale=self.size) diff --git a/lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/subplotzero_ylabel.png b/lib/mpl_toolkits/axisartist/tests/baseline_images/test_axislines/subplotzero_ylabel.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc9e4a1540d2d71cc069c6130f21623d7393201 GIT binary patch literal 6872 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 literal 0 HcmV?d00001 diff --git a/lib/mpl_toolkits/axisartist/tests/test_axislines.py b/lib/mpl_toolkits/axisartist/tests/test_axislines.py index 09fc1a540b0d..123123069623 100644 --- a/lib/mpl_toolkits/axisartist/tests/test_axislines.py +++ b/lib/mpl_toolkits/axisartist/tests/test_axislines.py @@ -138,18 +138,13 @@ def test_axisline_style_tight(): @image_comparison(['subplotzero_ylabel.png'], style='mpl20') def test_subplotzero_ylabel(): fig = plt.figure() - ax = SubplotZero(fig, 111) - _ = fig.add_subplot(ax) + ax = fig.add_subplot(111, axes_class=SubplotZero) - for direction in ["xzero", "yzero"]: - ax.axis[direction].set_visible(True) - ax.axis[direction].set_axisline_style("->") - # Set outward ticks - ax.axis[direction].major_ticks.set_tick_out(True) - ax.axis[direction].minor_ticks.set_tick_out(True) + ax.set(xlim=(-3, 7), ylim=(-3, 7), xlabel="x", ylabel="y") - ax.axis["yzero"].set_axis_direction("left") + zero_axis = ax.axis["xzero", "yzero"] + zero_axis.set_visible(True) # they are hidden by default - plt.plot([0, 1], [0, 1], c="blue", lw=2) - plt.xlabel('x') - plt.ylabel('y') + ax.axis["left", "right", "bottom", "top"].set_visible(False) + + zero_axis.set_axisline_style("->")