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

Skip to content

Commit 4013e50

Browse files
authored
Merge pull request #20197 from anntzer/fastlinemarkercolor
Speedup Line2D marker color setting.
2 parents 480ac2d + c140a14 commit 4013e50

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

lib/matplotlib/lines.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,6 +1146,19 @@ def set_marker(self, marker):
11461146
self._marker = MarkerStyle(marker, self._marker.get_fillstyle())
11471147
self.stale = True
11481148

1149+
def _set_markercolor(self, attr, val):
1150+
if val is None:
1151+
val = 'auto'
1152+
current = getattr(self, attr)
1153+
if current is None:
1154+
self.stale = True
1155+
else:
1156+
neq = current != val
1157+
# Much faster than `np.any(current != val)` if no arrays are used.
1158+
if neq.any() if isinstance(neq, np.ndarray) else neq:
1159+
self.stale = True
1160+
setattr(self, attr, val)
1161+
11491162
def set_markeredgecolor(self, ec):
11501163
"""
11511164
Set the marker edge color.
@@ -1154,55 +1167,42 @@ def set_markeredgecolor(self, ec):
11541167
----------
11551168
ec : color
11561169
"""
1157-
if ec is None:
1158-
ec = 'auto'
1159-
if (self._markeredgecolor is None
1160-
or np.any(self._markeredgecolor != ec)):
1161-
self.stale = True
1162-
self._markeredgecolor = ec
1170+
self._set_markercolor("_markeredgecolor", ec)
11631171

1164-
def set_markeredgewidth(self, ew):
1172+
def set_markerfacecolor(self, fc):
11651173
"""
1166-
Set the marker edge width in points.
1174+
Set the marker face color.
11671175
11681176
Parameters
11691177
----------
1170-
ew : float
1171-
Marker edge width, in points.
1178+
fc : color
11721179
"""
1173-
if ew is None:
1174-
ew = rcParams['lines.markeredgewidth']
1175-
if self._markeredgewidth != ew:
1176-
self.stale = True
1177-
self._markeredgewidth = ew
1180+
self._set_markercolor("_markerfacecolor", fc)
11781181

1179-
def set_markerfacecolor(self, fc):
1182+
def set_markerfacecoloralt(self, fc):
11801183
"""
1181-
Set the marker face color.
1184+
Set the alternate marker face color.
11821185
11831186
Parameters
11841187
----------
11851188
fc : color
11861189
"""
1187-
if fc is None:
1188-
fc = 'auto'
1189-
if np.any(self._markerfacecolor != fc):
1190-
self.stale = True
1191-
self._markerfacecolor = fc
1190+
self._set_markercolor("_markerfacecoloralt", fc)
11921191

1193-
def set_markerfacecoloralt(self, fc):
1192+
def set_markeredgewidth(self, ew):
11941193
"""
1195-
Set the alternate marker face color.
1194+
Set the marker edge width in points.
11961195
11971196
Parameters
11981197
----------
1199-
fc : color
1198+
ew : float
1199+
Marker edge width, in points.
12001200
"""
1201-
if fc is None:
1202-
fc = 'auto'
1203-
if np.any(self._markerfacecoloralt != fc):
1201+
if ew is None:
1202+
ew = rcParams['lines.markeredgewidth']
1203+
if self._markeredgewidth != ew:
12041204
self.stale = True
1205-
self._markerfacecoloralt = fc
1205+
self._markeredgewidth = ew
12061206

12071207
def set_markersize(self, sz):
12081208
"""

0 commit comments

Comments
 (0)