@@ -189,6 +189,15 @@ def _determine_cmap_params(
189189 else :
190190 mpl = attempt_import ("matplotlib" )
191191
192+ if plot_data .dtype .kind == "m" :
193+ unit , _ = np .datetime_data (plot_data .dtype )
194+ zero = np .timedelta64 (0 , unit )
195+ elif plot_data .dtype .kind == "M" :
196+ unit , _ = np .datetime_data (plot_data .dtype )
197+ zero = np .datetime64 (0 , unit )
198+ else :
199+ zero = 0.0
200+
192201 if isinstance (levels , Iterable ):
193202 levels = sorted (levels )
194203
@@ -197,15 +206,15 @@ def _determine_cmap_params(
197206 # Handle all-NaN input data gracefully
198207 if calc_data .size == 0 :
199208 # Arbitrary default for when all values are NaN
200- calc_data = np .array (0.0 )
209+ calc_data = np .array (zero )
201210
202211 # Setting center=False prevents a divergent cmap
203212 possibly_divergent = center is not False
204213
205214 # Set center to 0 so math below makes sense but remember its state
206215 center_is_none = False
207216 if center is None :
208- center = 0
217+ center = zero
209218 center_is_none = True
210219
211220 # Setting both vmin and vmax prevents a divergent cmap
@@ -240,10 +249,10 @@ def _determine_cmap_params(
240249
241250 if possibly_divergent :
242251 levels_are_divergent = (
243- isinstance (levels , Iterable ) and levels [0 ] * levels [- 1 ] < 0
252+ isinstance (levels , Iterable ) and levels [0 ] * levels [- 1 ] < zero
244253 )
245254 # kwargs not specific about divergent or not: infer defaults from data
246- divergent = (vmin < 0 < vmax ) or not center_is_none or levels_are_divergent
255+ divergent = (vmin < zero < vmax ) or not center_is_none or levels_are_divergent
247256 else :
248257 divergent = False
249258
0 commit comments