Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6d17761

Browse files
committed
feat: extend StepPatch set/get methods, tests
1 parent e5af734 commit 6d17761

File tree

2 files changed

+60
-3
lines changed

2 files changed

+60
-3
lines changed

lib/matplotlib/patches.py

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,10 +1047,13 @@ def _update_path(self):
10471047
codes.append(np.array([Path.MOVETO] + [Path.LINETO]*(len(xy)-1)))
10481048
self._path = Path(np.vstack(verts), np.hstack(codes))
10491049

1050+
def get_data(self):
1051+
"""Get `.StepPatch` values and edges."""
1052+
return self._values, self._edges
1053+
10501054
def set_data(self, values, edges=None):
10511055
"""
1052-
Set the values and optionally edges of the
1053-
StepPatch artist.
1056+
Set `.StepPatch` values and optionally edges.
10541057
10551058
Parameters
10561059
----------
@@ -1065,6 +1068,42 @@ def set_data(self, values, edges=None):
10651068
self._update_path()
10661069
self.stale = True
10671070

1071+
def set_values(self, values):
1072+
"""
1073+
Set `.StepPatch` values.
1074+
1075+
Parameters
1076+
----------
1077+
values : 1D array-like
1078+
"""
1079+
self.set_data(values, edges=None)
1080+
1081+
def set_edges(self, edges):
1082+
"""
1083+
Set `.StepPatch` edges.
1084+
1085+
Parameters
1086+
----------
1087+
edges : 1D array-like
1088+
"""
1089+
self.set_data(None, edges=edges)
1090+
1091+
def get_baseline(self):
1092+
"""Get `.StepPatch` baseline value."""
1093+
return self.baseline
1094+
1095+
def set_baseline(self, baseline):
1096+
"""
1097+
Set `.StepPatch` baseline value.
1098+
1099+
Parameters
1100+
----------
1101+
baseline : float or None
1102+
"""
1103+
self.baseline = baseline
1104+
self._update_path()
1105+
self.stale = True
1106+
10681107

10691108
class Polygon(Patch):
10701109
"""A general polygon patch."""

lib/matplotlib/tests/test_axes.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1821,12 +1821,18 @@ def test_stairs_update(fig_test, fig_ref):
18211821
fig_test, test_ax = plt.subplots()
18221822
h = test_ax.stairs([1, 2, 3])
18231823
h.set_values([3, 2, 1])
1824+
h.set_edges(np.arange(4)+2)
18241825
h.set_data([1, 2, 1], np.arange(4)/2)
18251826
h.set_data([1, 2, 3])
18261827
h.set_data(None, np.arange(4))
1828+
assert np.allclose(h.get_data()[0], np.arange(1, 4))
1829+
assert np.allclose(h.get_data()[1], np.arange(4))
1830+
h.set_baseline(-2)
1831+
assert h.get_baseline() == -2
1832+
18271833
# # Ref
18281834
fig_ref, ref_ax = plt.subplots()
1829-
h = ref_ax.stairs([1, 2, 3])
1835+
h = ref_ax.stairs([1, 2, 3], baseline=-2)
18301836

18311837

18321838
@pytest.mark.xfail
@@ -1839,6 +1845,18 @@ def test_stairs_invalid_mismatch():
18391845
plt.stairs([1, 2], [0, 1])
18401846

18411847

1848+
@pytest.mark.xfail
1849+
def test_stairs_invalid_update():
1850+
h = plt.stairs([1, 2], [0, 1])
1851+
h.set_edges(np.arange(5))
1852+
1853+
1854+
@pytest.mark.xfail
1855+
def test_stairs_invalid_update2():
1856+
h = plt.stairs([1, 2], [0, 1])
1857+
h.set_edges([1, np.nan, 2])
1858+
1859+
18421860
@image_comparison(['test_stairs_options.png'], remove_text=True)
18431861
def test_stairs_options():
18441862
x, y = np.array([1, 2, 3, 4, 5]), np.array([1, 2, 3, 4]).astype(float)

0 commit comments

Comments
 (0)