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

Skip to content

Commit 52a06a6

Browse files
Code review updates
1 parent a700fe9 commit 52a06a6

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

lib/mpl_toolkits/mplot3d/art3d.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,10 @@ def set_3d_properties(self, z=0, zdir='z', axlim_clip=False):
178178

179179
@artist.allow_rasterization
180180
def draw(self, renderer):
181+
pos3d = np.array([self._x, self._y, self._z], dtype=float)
181182
if self._axlim_clip:
182183
mask = _viewlim_mask(self._x, self._y, self._z, self.axes)
183-
pos3d = np.ma.array((self._x, self._y, self._z),
184-
dtype=float, mask=mask).filled(np.nan)
185-
else:
186-
pos3d = np.asanyarray([self._x, self._y, self._z])
184+
pos3d[mask] = np.nan
187185

188186
proj = proj3d._proj_trans_points([pos3d, pos3d + self._dir_vec], self.axes.M)
189187
dx = proj[0][1] - proj[0][0]
@@ -465,7 +463,8 @@ def do_3d_projection(self):
465463
self.axes)
466464
if np.any(viewlim_mask):
467465
# broadcast mask to 3D
468-
viewlim_mask = viewlim_mask[..., np.newaxis].repeat(3, axis=-1)
466+
viewlim_mask = np.broadcast_to(viewlim_mask[..., np.newaxis],
467+
(*viewlim_mask.shape, 3))
469468
mask = mask | viewlim_mask
470469
xyzs = np.ma.array(proj3d._proj_transform_vectors(segments, self.axes.M),
471470
mask=mask)
@@ -1100,15 +1099,17 @@ def _get_vector(self, segments3d):
11001099
"""
11011100
if isinstance(segments3d, np.ndarray):
11021101
if segments3d.ndim != 3 or segments3d.shape[-1] != 3:
1103-
raise ValueError("segments3d must be a MxNx3 array, but got " +
1104-
"shape {}".format(segments3d.shape))
1102+
raise ValueError("segments3d must be a MxNx3 array, but got "
1103+
f"shape {segments3d.shape}")
11051104
if isinstance(segments3d, np.ma.MaskedArray):
11061105
self._faces = segments3d.data
11071106
self._invalid_vertices = segments3d.mask.any(axis=-1)
11081107
else:
11091108
self._faces = segments3d
11101109
self._invalid_vertices = False
11111110
else:
1111+
# Turn the potentially ragged list into a numpy array for later speedups
1112+
# If it is ragged, set the unused vertices per face as invalid
11121113
num_faces = len(segments3d)
11131114
num_verts = np.fromiter(map(len, segments3d), dtype=np.intp)
11141115
max_verts = num_verts.max(initial=0)
@@ -1117,8 +1118,6 @@ def _get_vector(self, segments3d):
11171118
segments[i, :len(face)] = face
11181119
self._faces = segments
11191120
self._invalid_vertices = np.arange(max_verts) >= num_verts[:, None]
1120-
assert self._invalid_vertices is False or \
1121-
self._invalid_vertices.shape == self._faces.shape[:-1]
11221121

11231122
def set_verts(self, verts, closed=True):
11241123
"""
@@ -1184,11 +1183,7 @@ def do_3d_projection(self):
11841183
needs_masking = np.any(self._invalid_vertices)
11851184
num_faces = len(self._faces)
11861185
mask = self._invalid_vertices
1187-
1188-
# Some faces might contain masked vertices, so we want to ignore any
1189-
# errors that those might cause
1190-
with np.errstate(invalid='ignore', divide='ignore'):
1191-
pfaces = proj3d._proj_transform_vectors(self._faces, self.axes.M)
1186+
pfaces = proj3d._proj_transform_vectors(self._faces, self.axes.M)
11921187

11931188
if self._axlim_clip:
11941189
viewlim_mask = _viewlim_mask(self._faces[..., 0], self._faces[..., 1],

0 commit comments

Comments
 (0)