@@ -739,16 +739,17 @@ def draw(self, renderer):
739739 subslice = slice (max (i0 - 1 , 0 ), i1 + 1 )
740740 self .ind_offset = subslice .start
741741 self ._transform_path (subslice )
742-
743- transf_path = self . _get_transformed_path ()
742+ else :
743+ subslice = None
744744
745745 if self .get_path_effects ():
746746 from matplotlib .patheffects import PathEffectRenderer
747747 renderer = PathEffectRenderer (self .get_path_effects (), renderer )
748748
749749 renderer .open_group ('line2d' , self .get_gid ())
750750 if self ._lineStyles [self ._linestyle ] != '_draw_nothing' :
751- tpath , affine = transf_path .get_transformed_path_and_affine ()
751+ tpath , affine = (self ._get_transformed_path ()
752+ .get_transformed_path_and_affine ())
752753 if len (tpath .vertices ):
753754 gc = renderer .new_gc ()
754755 self ._set_gc_clip (gc )
@@ -796,7 +797,20 @@ def draw(self, renderer):
796797 gc .set_foreground (ec_rgba , isRGBA = True )
797798
798799 marker = self ._marker
799- tpath , affine = transf_path .get_transformed_points_and_affine ()
800+
801+ # Markers *must* be drawn ignoring the drawstyle (but don't pay the
802+ # recaching if drawstyle is already "default").
803+ if self .get_drawstyle () != "default" :
804+ with cbook ._setattr_cm (
805+ self , _drawstyle = "default" , _transformed_path = None ):
806+ self .recache ()
807+ self ._transform_path (subslice )
808+ tpath , affine = (self ._get_transformed_path ()
809+ .get_transformed_path_and_affine ())
810+ else :
811+ tpath , affine = (self ._get_transformed_path ()
812+ .get_transformed_path_and_affine ())
813+
800814 if len (tpath .vertices ):
801815 # subsample the markers if markevery is not None
802816 markevery = self .get_markevery ()
0 commit comments