def map(h2, show=True, cmap="gray", cmap_reverse=True, **kwargs):
"""Heat map."""
density = kwargs.pop("density", False)
data = get_data(h2, density=density)
show_colorbar = kwargs.pop("show_colorbar", True)
X, Y = np.meshgrid(h2.get_bin_centers(0), h2.get_bin_centers(1))
dX, dY = np.meshgrid(h2.get_bin_widths(0), h2.get_bin_widths(1))
source = ColumnDataSource({
"frequency": data.T.flatten(),
"x": X.flatten(),
"y": Y.flatten(),
"width": dX.flatten(),
"height": dY.flatten()
})
import bokeh.palettes
if cmap in named_palettes:
palette_generator = getattr(bokeh.palettes, cmap)
palette = palette_generator(256)
elif cmap in bokeh.palettes.all_palettes:
palette = bokeh.palettes.all_palettes[cmap]
else:
raise RuntimeError("Unknown palette")
if cmap_reverse:
palette = palette[::-1]
mapper = LinearColorMapper(palette=palette, low=data.min(), high=data.max())
p = kwargs.pop("figure", _create_figure(h2))
p.rect(source=source,
x="x", y="y",
width="width", height="height",
fill_color={"field" : "frequency", "transform" : mapper},
line_color="white")
p.select_one(HoverTool).tooltips = [
("frequency", "@frequency")
]
if show_colorbar:
from bokeh.models import ColorBar, BasicTicker
color_bar = ColorBar(color_mapper=mapper, #, major_label_text_font_size="5pt",
ticker=BasicTicker(desired_num_ticks=6),
# formatter=PrintfTickFormatter(format="%d%%"),
# label_standoff=6, border_line_color=None,
location=(0, 0)
)
p.add_layout(color_bar, 'right')
if show:
bokeh_show(p)
return p
评论列表
文章目录