@@ -721,10 +721,10 @@ class ContourSet(cm.ScalarMappable, ContourLabeler):
721
721
722
722
def __init__ (self , ax , * args ,
723
723
levels = None , filled = False , linewidths = None , linestyles = None ,
724
- hatches = ( None ,), alpha = None , origin = None , extent = None ,
725
- cmap = None , colors = None , norm = None , vmin = None , vmax = None ,
726
- extend = 'neither' , antialiased = None , nchunk = 0 , locator = None ,
727
- transform = None ,
724
+ negative_linestyles = None , hatches = ( None ,), alpha = None ,
725
+ origin = None , extent = None , cmap = None , colors = None , norm = None ,
726
+ vmin = None , vmax = None , extend = 'neither' , antialiased = None ,
727
+ nchunk = 0 , locator = None , transform = None ,
728
728
** kwargs ):
729
729
"""
730
730
Draw contour lines or filled regions, depending on
@@ -775,6 +775,7 @@ def __init__(self, ax, *args,
775
775
self .filled = filled
776
776
self .linewidths = linewidths
777
777
self .linestyles = linestyles
778
+ self .negative_linestyles = negative_linestyles
778
779
self .hatches = hatches
779
780
self .alpha = alpha
780
781
self .origin = origin
@@ -1296,10 +1297,14 @@ def _process_linewidths(self):
1296
1297
def _process_linestyles (self ):
1297
1298
linestyles = self .linestyles
1298
1299
Nlev = len (self .levels )
1300
+ neg_ls = self .negative_linestyles
1299
1301
if linestyles is None :
1300
1302
tlinestyles = ['solid' ] * Nlev
1301
1303
if self .monochrome :
1302
- neg_ls = mpl .rcParams ['contour.negative_linestyle' ]
1304
+ # If negative_linestyles was not defined as a kwarg,
1305
+ # define negative_linestyles with rcParams
1306
+ if not neg_ls :
1307
+ neg_ls = mpl .rcParams ['contour.negative_linestyle' ]
1303
1308
eps = - (self .zmax - self .zmin ) * 1e-15
1304
1309
for i , lev in enumerate (self .levels ):
1305
1310
if lev < eps :
@@ -1764,6 +1769,17 @@ def _initialize_x_y(self, z):
1764
1769
iterable is shorter than the number of contour levels
1765
1770
it will be repeated as necessary.
1766
1771
1772
+ negative_linestyles : {*None*, 'solid', 'dashed', 'dashdot', 'dotted'}, optional
1773
+ *Only applies to* `.contour`.
1774
+
1775
+ If *negative_linestyles* is *None*, the default is 'dashed' for
1776
+ negative contours.
1777
+
1778
+ *negative_linestyles* can also be an iterable of the above
1779
+ strings specifying a set of linestyles to be used. If this
1780
+ iterable is shorter than the number of contour levels
1781
+ it will be repeated as necessary.
1782
+
1767
1783
hatches : list[str], optional
1768
1784
*Only applies to* `.contourf`.
1769
1785
0 commit comments