Skip to content

Add support for hover when datashade points #1428

Closed
@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

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions