HA! I figured out a hack.
import hvplot.xarray # v:0.10.0
import panel as pn # v:1.4.2
import cartopy.crs as ccrs # v:0.22.0
import param # v:2.1.0
import xarray as xr # v:2023.9.0
from holoviews import DynamicMap # v:1.18.1
from holoviews.streams import Tap
from geoviews.feature import borders, coastline, lakes, ocean, rivers
pn.extension()
class HvPlotQuadmeshStreams(param.Parameterized):
def tap_callback(self, x, y):
return self.ds.air.sel(lon=x,lat=y, method='nearest').hvplot.line(x='time')
def __init__(self, **params):
self.ds = xr.tutorial.open_dataset('air_temperature').load()
self.map_plot = self.ds.hvplot.quadmesh(rasterize=True)
self.tap_stream = Tap(source=self.map_plot, x=-75, y=45)
self.dynamic_map = DynamicMap(self.tap_callback, streams=[self.tap_stream])
super().__init__(**params)
def view(self):
return pn.Column((borders * coastline) * self.map_plot, self.dynamic_map)
app = HvPlotQuadmeshStreams()
pn.panel(app.view)
Overlaying after setting the stream (return statement of view
) seems to do the trick! I would say that it should have worked either way but at least I can advance on my projects now