Skip to content

Commit 976823e

Browse files
committed
MarkerStyle is considered immutable
1 parent 408b1ab commit 976823e

File tree

4 files changed

+56
-23
lines changed

4 files changed

+56
-23
lines changed
Lines changed: 5 additions & 0 deletions
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

Lines changed: 5 additions & 4 deletions
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(), fs))
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

Lines changed: 13 additions & 2 deletions
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 immutable. If you need to change anything, create a new
151+
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

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,43 @@ def test_marker_fillstyle():
1313
assert not marker_style.is_filled()
1414

1515

16-
def test_markers_valid():
17-
marker_style = markers.MarkerStyle()
18-
mrk_array = np.array([[-0.5, 0],
19-
[0.5, 0]])
16+
@pytest.mark.parametrize('marker', [
17+
'o',
18+
'x',
19+
'',
20+
'None',
21+
None,
22+
r'$\frac{1}{2}$',
23+
"$\u266B$",
24+
1,
25+
markers.TICKLEFT,
26+
[[-1, 0], [1, 0]],
27+
np.array([[-1, 0], [1, 0]]),
28+
Path([[0, 0], [1, 0]], [Path.MOVETO, Path.LINETO]),
29+
(5, 0), # a pentagon
30+
(7, 1), # a 7-pointed star
31+
(5, 2), # asterisk
32+
(5, 0, 10), # a pentagon, rotated by 10 degrees
33+
(7, 1, 10), # a 7-pointed star, rotated by 10 degrees
34+
(5, 2, 10), # asterisk, rotated by 10 degrees
35+
markers.MarkerStyle(),
36+
markers.MarkerStyle('o'),
37+
])
38+
def test_markers_valid(marker):
2039
# Checking this doesn't fail.
21-
marker_style.set_marker(mrk_array)
40+
markers.MarkerStyle(marker)
2241

2342

24-
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.
43+
@pytest.mark.parametrize('marker', [
44+
'square', # arbitrary string
45+
np.array([[-0.5, 0, 1, 2, 3]]), # 1D array
46+
(1,),
47+
(5, 3), # second parameter of tuple must be 0, 1, or 2
48+
(1, 2, 3, 4),
49+
])
50+
def test_markers_invalid(marker):
2851
with pytest.raises(ValueError):
29-
marker_style.set_marker(mrk_array)
30-
31-
32-
def test_marker_path():
33-
marker_style = markers.MarkerStyle()
34-
path = Path([[0, 0], [1, 0]], [Path.MOVETO, Path.LINETO])
35-
# Checking this doesn't fail.
36-
marker_style.set_marker(path)
52+
markers.MarkerStyle(marker)
3753

3854

3955
class UnsnappedMarkerStyle(markers.MarkerStyle):

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy