Skip to content

Commit 475462a

Browse files
committed
MarkerStyle is considered immutable
1 parent 408b1ab commit 475462a

File tree

4 files changed

+27
-17
lines changed

4 files changed

+27
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
``MarkerStyle`` is considered immutable
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
``MarkerStyle.set_fillstyle()`` and ``MarkerStyle.set_marker()`` are
4+
deprecated. Create a new ``MarkerStyle`` with the respective parameters
5+
instead.

lib/matplotlib/lines.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ def set_fillstyle(self, fs):
534534
535535
For examples see :ref:`marker_fill_styles`.
536536
"""
537-
self._marker.set_fillstyle(fs)
537+
self.set_marker(MarkerStyle(self._marker.get_marker(), fillstyle))
538538
self.stale = True
539539

540540
def set_markevery(self, every):
@@ -930,7 +930,8 @@ def get_markeredgecolor(self):
930930
if rcParams['_internal.classic_mode']:
931931
if self._marker.get_marker() in ('.', ','):
932932
return self._color
933-
if self._marker.is_filled() and self.get_fillstyle() != 'none':
933+
if (self._marker.is_filled()
934+
and self._marker.get_fillstyle() != 'none'):
934935
return 'k' # Bad hard-wired default...
935936
return self._color
936937
else:
@@ -945,7 +946,7 @@ def get_markeredgewidth(self):
945946
return self._markeredgewidth
946947

947948
def _get_markerfacecolor(self, alt=False):
948-
if self.get_fillstyle() == 'none':
949+
if self._marker.get_fillstyle() == 'none':
949950
return 'none'
950951
fc = self._markerfacecoloralt if alt else self._markerfacecolor
951952
if cbook._str_lower_equal(fc, 'auto'):
@@ -1166,7 +1167,7 @@ def set_marker(self, marker):
11661167
See `~matplotlib.markers` for full description of possible
11671168
arguments.
11681169
"""
1169-
self._marker.set_marker(marker)
1170+
self._marker = MarkerStyle(marker, self._marker.get_fillstyle())
11701171
self.stale = True
11711172

11721173
def set_markeredgecolor(self, ec):

lib/matplotlib/markers.py

+13-2
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ class MarkerStyle:
147147
"""
148148
A class representing marker types.
149149
150+
Instances are considered immutable. If you need to change anything, create
151+
a new instance.
152+
150153
Attributes
151154
----------
152155
markers : list
@@ -228,8 +231,8 @@ def __init__(self, marker=None, fillstyle=None):
228231
One of 'full', 'left', 'right', 'bottom', 'top', 'none'.
229232
"""
230233
self._marker_function = None
231-
self.set_fillstyle(fillstyle)
232-
self.set_marker(marker)
234+
self._set_fillstyle(fillstyle)
235+
self._set_marker(marker)
233236

234237
def _recache(self):
235238
if self._marker_function is None:
@@ -256,7 +259,11 @@ def is_filled(self):
256259
def get_fillstyle(self):
257260
return self._fillstyle
258261

262+
@_api.deprecated("3.4", alternative="a new marker")
259263
def set_fillstyle(self, fillstyle):
264+
return self._set_fillstyle(fillstyle)
265+
266+
def _set_fillstyle(self, fillstyle):
260267
"""
261268
Set the fillstyle.
262269
@@ -281,7 +288,11 @@ def get_capstyle(self):
281288
def get_marker(self):
282289
return self._marker
283290

291+
@_api.deprecated("3.4", alternative="a new marker")
284292
def set_marker(self, marker):
293+
return self._set_marker(marker)
294+
295+
def _set_marker(self, marker):
285296
"""
286297
Set the marker.
287298

lib/matplotlib/tests/test_marker.py

+4-11
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,19 @@ def test_marker_fillstyle():
1414

1515

1616
def test_markers_valid():
17-
marker_style = markers.MarkerStyle()
18-
mrk_array = np.array([[-0.5, 0],
19-
[0.5, 0]])
2017
# Checking this doesn't fail.
21-
marker_style.set_marker(mrk_array)
18+
markers.MarkerStyle(np.array([[-0.5, 0], [0.5, 0]])
2219

2320

2421
def test_markers_invalid():
25-
marker_style = markers.MarkerStyle()
26-
mrk_array = np.array([[-0.5, 0, 1, 2, 3]])
27-
# Checking this does fail.
2822
with pytest.raises(ValueError):
29-
marker_style.set_marker(mrk_array)
23+
markers.MarkerStyle(np.array([[-0.5, 0, 1, 2, 3]]))
3024

3125

3226
def test_marker_path():
33-
marker_style = markers.MarkerStyle()
34-
path = Path([[0, 0], [1, 0]], [Path.MOVETO, Path.LINETO])
3527
# Checking this doesn't fail.
36-
marker_style.set_marker(path)
28+
path = Path([[0, 0], [1, 0]], [Path.MOVETO, Path.LINETO])
29+
markers.MarkerStyle(path)
3730

3831

3932
class UnsnappedMarkerStyle(markers.MarkerStyle):

0 commit comments

Comments
 (0)