Source code for holoviews.plotting.mpl.hex_tiles
import numpy as np
import param
from .element import ColorbarPlot
[docs]class HexTilesPlot(ColorbarPlot):
aggregator = param.Callable(default=np.size, doc="""
Aggregation function used to compute bin values. Any NumPy
reduction is allowed, defaulting to np.size to count the number
of values in each bin.""")
gridsize = param.ClassSelector(default=50, class_=(int, tuple), doc="""
Number of hexagonal bins along x- and y-axes. Defaults to uniform
sampling along both axes when setting and integer but independent
bin sampling can be specified a tuple of integers corresponding to
the number of bins along each axis.""")
max_scale = param.Number(default=0.9, bounds=(0, None), doc="""
When size_index is enabled this defines the maximum size of each
bin relative to uniform tile size, i.e. for a value of 1, the
largest bin will match the size of bins when scaling is disabled.
Setting value larger than 1 will result in overlapping bins.""")
min_count = param.Number(default=None, doc="""
The display threshold before a bin is shown, by default bins with
a count of less than 1 are hidden.""")
style_opts = ['cmap', 'edgecolors', 'alpha', 'linewidths', 'marginals']
_nonvectorized_styles = style_opts
_plot_methods = dict(single='hexbin')
def get_data(self, element, ranges, style):
if not element.vdims:
element = element.add_dimension('Count', 0, np.ones(len(element)), True)
xs, ys = (element.dimension_values(i) for i in range(2))
args = (ys, xs) if self.invert_axes else (xs, ys)
args += (element.dimension_values(2),)
cdim = element.vdims[0]
agg = np.sum if self.aggregator is np.size else self.aggregator
self._norm_kwargs(element, ranges, style, cdim)
style['reduce_C_function'] = agg
style['vmin'], style['vmax'] = cdim.range
style['xscale'] = 'log' if self.logx else 'linear'
style['yscale'] = 'log' if self.logy else 'linear'
style['gridsize'] = self.gridsize
style['mincnt'] = -1 if self.min_count == 0 else self.min_count
return args, style, {}