Skip to content

Commit

Permalink
Fixed HeatMap invert axes
Browse files Browse the repository at this point in the history
  • Loading branch information
philippjfr committed Oct 6, 2017
1 parent eac70d7 commit f747d70
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
9 changes: 8 additions & 1 deletion holoviews/plotting/bokeh/raster.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,14 @@ def get_data(self, element, ranges=None):

aggregate = element.gridded
xdim, ydim = aggregate.dimensions()[:2]
xvals, yvals, zvals = (aggregate.dimension_values(i) for i in range(3))
xvals, yvals = (aggregate.dimension_values(x),
aggregate.dimension_values(y))
zvals = aggregate.dimension_values(2, flat=False)
if self.invert_axes:
xdim, ydim = ydim, xdim
zvals = zvals.T[::-1, ::-1].flatten()
else:
zvals = zvals.T.flatten()
if xvals.dtype.kind not in 'SU':
xvals = [xdim.pprint_value(xv) for xv in xvals]
if yvals.dtype.kind not in 'SU':
Expand Down
18 changes: 15 additions & 3 deletions holoviews/plotting/mpl/raster.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,17 @@ def _annotate_plot(self, ax, annotations):

def _annotate_values(self, element):
val_dim = element.vdims[0]
vals = element.dimension_values(2)
vals = element.dimension_values(2, flat=False)
if self.invert_axes:
vals = vals[::-1, ::-1]
else:
vals = vals.T
if self.invert_xaxis: vals = vals[::-1]
if self.invert_yaxis: vals = vals[:, ::-1]
vals = vals.flatten()
d1uniq, d2uniq = [element.dimension_values(i, False) for i in range(2)]
if self.invert_axes:
d1uniq, d2uniq = d2uniq, d1uniq
num_x, num_y = len(d1uniq), len(d2uniq)
xpos = np.linspace(0.5, num_x-0.5, num_x)
ypos = np.linspace(0.5, num_y-0.5, num_y)
Expand All @@ -133,6 +142,8 @@ def _compute_ticks(self, element, ranges):
agg = element.gridded
dim1_keys, dim2_keys = [unique_array(agg.dimension_values(i, False))
for i in range(2)]
if self.invert_axes:
dim1_keys, dim2_keys = dim2_keys, dim1_keys
num_x, num_y = len(dim1_keys), len(dim2_keys)
xpos = np.linspace(.5, num_x-0.5, num_x)
ypos = np.linspace(.5, num_y-0.5, num_y)
Expand All @@ -158,6 +169,8 @@ def get_data(self, element, ranges, style):
data = np.flipud(element.gridded.dimension_values(2, flat=False))
data = np.ma.array(data, mask=np.logical_not(np.isfinite(data)))
if self.invert_axes: data = data.T
if self.invert_xaxis: data = data[:, ::-1]
if self.invert_yaxis: data = data[::-1]
shape = data.shape
style['aspect'] = shape[0]/shape[1]
style['extent'] = (0, shape[1], 0, shape[0])
Expand All @@ -171,8 +184,7 @@ def update_handles(self, key, axis, element, ranges, style):
im = self.handles['artist']
data, style, axis_kwargs = self.get_data(element, ranges, style)
im.set_data(data[0])
shape = data[0].shape
im.set_extent((0, shape[1], 0, shape[0]))
im.set_extent(style['extent'])
im.set_clim((style['vmin'], style['vmax']))
if 'norm' in style:
im.norm = style['norm']
Expand Down

0 comments on commit f747d70

Please sign in to comment.