@@ -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