bokeh.py 文件源码

python
阅读 16 收藏 0 点赞 0 评论 0

项目:physt 作者: janpipek 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号