Skip to content

Commit

Permalink
Added handling for zero data and zero range (#648)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbednar committed Sep 10, 2018
1 parent 40f61f8 commit 2e1ed1b
Showing 1 changed file with 32 additions and 4 deletions.
36 changes: 32 additions & 4 deletions datashader/glyphs.py
Expand Up @@ -38,8 +38,13 @@ def _compute_x_bounds(xs):
minval = x
if x > maxval:
maxval = x

if not (np.isfinite(minval) and np.isfinite(maxval)):
raise ValueError('No non-NaN x coordinates found.')
#print("No x values; defaulting to range -0.5,0.5")
minval, maxval = -0.5, 0.5
elif minval==maxval:
#print("No x range; defaulting to x-0.5,x+0.5")
minval, maxval = minval-0.5, minval+0.5
return minval, maxval

@staticmethod
Expand All @@ -53,8 +58,13 @@ def _compute_y_bounds(ys):
minval = y
if y > maxval:
maxval = y

if not (np.isfinite(minval) and np.isfinite(maxval)):
raise ValueError('No non-NaN y coordinates found.')
#print("No y values; defaulting to range -0.5,0.5")
minval, maxval = -0.5, 0.5
elif minval==maxval:
#print("No y range; defaulting to y-0.5,y+0.5")
minval, maxval = minval-0.5, minval+0.5
return minval, maxval

@memoize
Expand All @@ -63,15 +73,33 @@ def _compute_x_bounds_dask(self, df):
``df`` is immutable/hashable (a Dask dataframe).
"""
xs = df[self.x].values
return np.nanmin(xs), np.nanmax(xs)
minval, maxval = np.nanmin(xs), np.nanmax(xs)

if minval == np.nan and maxval == np.nan:
#print("No x values; defaulting to range -0.5,0.5")
minval, maxval = -0.5, 0.5
elif minval==maxval:
#print("No x range; defaulting to x-0.5,x+0.5")
minval, maxval = minval-0.5, minval+0.5
return minval, maxval


@memoize
def _compute_y_bounds_dask(self, df):
"""Like ``PointLike._compute_y_bounds``, but memoized because
``df`` is immutable/hashable (a Dask dataframe).
"""
ys = df[self.y].values
return np.nanmin(ys), np.nanmax(ys)
minval, maxval = np.nanmin(ys), np.nanmax(ys)

if minval == np.nan and maxval == np.nan:
#print("No y values; defaulting to range -0.5,0.5")
minval, maxval = -0.5, 0.5
elif minval==maxval:
#print("No y range; defaulting to y-0.5,y+0.5")
minval, maxval = minval-0.5, minval+0.5
return minval, maxval



class _PolygonLike(_PointLike):
Expand Down

0 comments on commit 2e1ed1b

Please sign in to comment.