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

Skip to content

Commit d1b07c0

Browse files
committed
Fix mplot3d bug with empty lists
thanks to Ryan Wagner. svn path=/trunk/matplotlib/; revision=7260
1 parent 16c4aec commit d1b07c0

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

lib/mpl_toolkits/mplot3d/axes3d.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -633,11 +633,14 @@ def _shade_colors(self, color, normals):
633633

634634
shade = np.array(shade)
635635
mask = ~np.isnan(shade)
636-
norm = Normalize(min(shade[mask]), max(shade[mask]))
637636

638-
color = color.copy()
639-
color[3] = 1
640-
colors = [color * (0.5 + norm(v) * 0.5) for v in shade]
637+
if len(shade[mask]) > 0:
638+
norm = Normalize(min(shade[mask]), max(shade[mask]))
639+
color = color.copy()
640+
color[3] = 1
641+
colors = [color * (0.5 + norm(v) * 0.5) for v in shade]
642+
else:
643+
colors = color.copy()
641644

642645
return colors
643646

@@ -707,6 +710,12 @@ def _3d_extend_contour(self, cset, stride=5):
707710
polyverts = []
708711
normals = []
709712
nsteps = round(len(topverts[0]) / stride)
713+
if nsteps <= 1:
714+
if len(topverts[0]) > 1:
715+
nsteps = 2
716+
else:
717+
continue
718+
710719
stepsize = (len(topverts[0]) - 1) / (nsteps - 1)
711720
for i in range(int(round(nsteps)) - 1):
712721
i1 = int(round(i * stepsize))
@@ -719,11 +728,11 @@ def _3d_extend_contour(self, cset, stride=5):
719728
v1 = np.array(topverts[0][i1]) - np.array(topverts[0][i2])
720729
v2 = np.array(topverts[0][i1]) - np.array(botverts[0][i1])
721730
normals.append(np.cross(v1, v2))
722-
731+
723732
colors = self._shade_colors(color, normals)
724733
colors2 = self._shade_colors(color, normals)
725734
polycol = art3d.Poly3DCollection(polyverts, facecolors=colors,
726-
edgecolors=colors2)
735+
edgecolors=colors2)
727736
self.add_collection3d(polycol)
728737

729738
for col in colls:

0 commit comments

Comments
 (0)