@@ -390,7 +390,8 @@ def __init__(self, ax, *args, **kwargs):
390390 self .levels = kwargs .get ('levels' , None )
391391 self .filled = kwargs .get ('filled' , False )
392392 self .linewidths = kwargs .get ('linewidths' , None )
393-
393+ self .linestyles = kwargs .get ('linestyles' , 'solid' )
394+
394395 self .alpha = kwargs .get ('alpha' , 1.0 )
395396 self .origin = kwargs .get ('origin' , None )
396397 self .extent = kwargs .get ('extent' , None )
@@ -457,11 +458,13 @@ def __init__(self, ax, *args, **kwargs):
457458 else :
458459 tlinewidths = self ._process_linewidths ()
459460 self .tlinewidths = tlinewidths
461+ tlinestyles = self ._process_linestyles ()
460462 C = _cntr .Cntr (x , y , z .filled (), _mask )
461- for level , width in zip (self .levels , tlinewidths ):
463+ for level , width , lstyle in zip (self .levels , tlinewidths , tlinestyles ):
462464 nlist = C .trace (level , points = 0 )
463465 col = collections .LineCollection (nlist ,
464- linewidths = width )
466+ linewidths = width ,
467+ linestyle = lstyle )
465468
466469 if level < 0.0 and self .monochrome :
467470 ls = mpl .rcParams ['contour.negative_linestyle' ]
@@ -696,6 +699,18 @@ def _process_linewidths(self):
696699 linewidths = [linewidths ] * Nlev
697700 tlinewidths = [(w ,) for w in linewidths ]
698701 return tlinewidths
702+
703+ def _process_linestyles (self ):
704+ linestyles = self .linestyles
705+ Nlev = len (self .levels )
706+ if linestyles is None :
707+ tlinestyles = ['solid' ] * Nlev
708+ else :
709+ if cbook .is_string_like (linestyles ):
710+ tlinestyles = [linestyles ] * Nlev
711+ elif cbook .iterable (linestyles ) and len (linestyles ) < Nlev :
712+ tlinestyles = list (linestyles ) * int (npy .ceil (Nlev / len (linestyles )))
713+ return tlinestyles
699714
700715 def get_alpha (self ):
701716 '''For compatibility with artists, return self.alpha'''
0 commit comments