Skip to content

Commit 7cb4cda

Browse files
Add support for linewidth in legend frame parsing with tests
1 parent 6d700a9 commit 7cb4cda

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

tests/test_linewidth.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def test_linewidth_basic():
2+
assert True

ultraplot/axes/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1699,7 +1699,7 @@ def _parse_frame(guide, fancybox=None, shadow=None, **kwargs):
16991699
alpha=("a", "framealpha", "facealpha"),
17001700
facecolor=("fc", "framecolor", "facecolor"),
17011701
edgecolor=("ec",),
1702-
edgewidth=("ew",),
1702+
edgewidth=("ew", "linewidth", "lw"),
17031703
)
17041704
_kw_frame_default = {
17051705
"alpha": f"{guide}.framealpha",

ultraplot/legend.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1945,19 +1945,31 @@ def _build_legends(
19451945
if multi:
19461946
objs = lax._parse_legend_centered(pairs, kw_frame=kw_frame, **kwargs)
19471947
else:
1948-
kwargs.update({key: kw_frame.pop(key) for key in ("shadow", "fancybox")})
1948+
kwargs.update(
1949+
{
1950+
key: kw_frame[key]
1951+
for key in ("shadow", "fancybox")
1952+
if key in kw_frame
1953+
}
1954+
)
19491955
objs = [
19501956
lax._parse_legend_aligned(
19511957
pairs, ncol=inputs.ncol, order=inputs.order, **kwargs
19521958
)
19531959
]
1954-
objs[0].legendPatch.update(kw_frame)
1955-
for obj in objs:
1960+
frame = objs[0].legendPatch
1961+
frame.update(kw_frame)
1962+
1963+
if "linewidth" in kw_frame:
1964+
frame.set_linewidth(kw_frame["linewidth"])
1965+
elif "lw" in kw_frame:
1966+
frame.set_linewidth(kw_frame["lw"])
1967+
for obj in objs:
19561968
if hasattr(lax, "legend_") and lax.legend_ is None:
19571969
lax.legend_ = obj
19581970
else:
19591971
lax.add_artist(obj)
1960-
return objs
1972+
return objs
19611973

19621974
def _apply_handle_styles(self, objs, *, kw_text, kw_handle):
19631975
"""

ultraplot/tests/test_legend.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ def test_auto_legend(rng):
2222
ix = ax.inset_axes((-0.2, 0.8, 0.5, 0.5), zoom=False)
2323
ix.line(rng.random((5, 2)), labels=list("pq"))
2424
ax.legend(loc="b", order="F", edgecolor="red9", edgewidth=3)
25+
# Test lw
26+
leg = ax.legend(frameon=True, lw=5)
27+
assert leg.get_frame().get_linewidth() == 5
28+
29+
# Test lw alias
30+
leg2 = ax.legend(frameon=True, lw=3)
31+
assert leg2.get_frame().get_linewidth() == 3
2532
return fig
2633

2734

0 commit comments

Comments
 (0)