Skip to content

Add support for hover when datashade points #1428

@ahuang11

Description

@ahuang11

Through ship traffics, I realized I can add hover tooltips to datashaded/rasterized plots; either through hd.inspect_points or a lookup_hook.
https://examples.holoviz.org/gallery/ship_traffic/ship_traffic.html#selecting-specific-datapoints

Can we have a reasonable default for hvPlot when hover=True? Or even HoloViews?

import pandas as pd
import hvplot.pandas
import panel as pn
import datashader as ds
import holoviews as hv
import holoviews.operation.datashader as hd

pop = pd.DataFrame(
    {
        "lon": [-86.75, -86.5, -86.25, -86.0],
        "lat": [33.75, 34.0, 34.25, 34.5],
        "population": [100, 200, 300, 400],
        "R": ["A", "B", "A", "B"],
    }
)

# lon_lat_to_easting_northing
pop["x"], pop["y"] = hv.util.transform.lon_lat_to_easting_northing(
    pop["lon"], pop["lat"]
)
tiles = hv.element.tiles.EsriStreet()

alpha_slider = pn.widgets.FloatSlider(name="Population", start=0, end=1, step=0.1)

highlighter = hd.inspect_points.instance(streams=[hv.streams.Tap])

points = pop.hvplot.points(
    "x",
    "y",
    datashade=True,
    aggregator=ds.count_cat("R"),
    dynspread=True,
    height=800,
    width=1000,
)
highlight = highlighter(points).opts(
    color="white", tools=["hover"], marker="square", size=10, fill_alpha=0
)
points * highlight

image

Currently, if you just do hover=True alongside datashade, it gives a useless RGB value

points = pop.hvplot.points(
    "x",
    "y",
    datashade=True,
    aggregator=ds.count_cat("R"),
    dynspread=True,
    height=800,
    width=1000,
    hover=True
)
points
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions