@@ -1274,19 +1274,12 @@ def _get_dtype(obj):
12741274 return "O"
12751275 return dtype
12761276
1277- @classmethod
1278- def _empty_plot (cls , x , values ):
1279- empty_x = np .empty (0 , dtype = x .dtype if hasattr (x , "dtype" ) else float )
1280- empty_vals = tuple (np .empty (0 , dtype = cls ._get_dtype (v )) for v in values )
1281- return empty_x , empty_vals
1282-
12831277 @classmethod
12841278 def pts_to_prestep (cls , x , values ):
1285- if len (x ) == 0 :
1286- return cls ._empty_plot (x , values )
1287-
1288- steps = np .zeros (2 * len (x ) - 1 )
1289- value_steps = tuple (np .empty (2 * len (x ) - 1 , dtype = cls ._get_dtype (v )) for v in values )
1279+ # Make sure `size` is never < 0. See https://github.com/holoviz/holoviews/issues/6893
1280+ size = max (2 * len (x ) - 1 , 0 )
1281+ steps = np .zeros (size )
1282+ value_steps = tuple (np .empty (size , dtype = cls ._get_dtype (v )) for v in values )
12901283
12911284 steps [0 ::2 ] = x
12921285 steps [1 ::2 ] = steps [0 :- 2 :2 ]
@@ -1301,14 +1294,12 @@ def pts_to_prestep(cls, x, values):
13011294
13021295 @classmethod
13031296 def pts_to_midstep (cls , x , values ):
1304- if len (x ) == 0 :
1305- return cls ._empty_plot (x , values )
1306-
13071297 steps = np .zeros (2 * len (x ))
13081298 value_steps = tuple (np .empty (2 * len (x ), dtype = cls ._get_dtype (v )) for v in values )
13091299
1310- steps [1 :- 1 :2 ] = steps [2 ::2 ] = x [:- 1 ] + (x [1 :] - x [:- 1 ]) / 2
1311- steps [0 ], steps [- 1 ] = x [0 ], x [- 1 ]
1300+ if len (x ):
1301+ steps [1 :- 1 :2 ] = steps [2 ::2 ] = x [:- 1 ] + (x [1 :] - x [:- 1 ]) / 2
1302+ steps [0 ], steps [- 1 ] = x [0 ], x [- 1 ]
13121303
13131304 val_arrays = []
13141305 for v , s in zip (values , value_steps , strict = True ):
@@ -1320,11 +1311,9 @@ def pts_to_midstep(cls, x, values):
13201311
13211312 @classmethod
13221313 def pts_to_poststep (cls , x , values ):
1323- if len (x ) == 0 :
1324- return cls ._empty_plot (x , values )
1325-
1326- steps = np .zeros (2 * len (x ) - 1 )
1327- value_steps = tuple (np .empty (2 * len (x ) - 1 , dtype = cls ._get_dtype (v )) for v in values )
1314+ size = max (2 * len (x ) - 1 , 0 )
1315+ steps = np .zeros (size )
1316+ value_steps = tuple (np .empty (size , dtype = cls ._get_dtype (v )) for v in values )
13281317
13291318 steps [0 ::2 ] = x
13301319 steps [1 ::2 ] = steps [2 ::2 ]
0 commit comments