I’m trying to develop a way to look at large spectral data, mixing both the raw spectral data (using datashader interactive image as the raw data is >8 million points), and simpler scatter plots to represent the data in another form.

For example, looking at mass spectral data. I have peak picked the data, and represent the picked peaks in a second type of plot (which I can do fine in Bokeh normally).

I want to overlay a scatter plot (~1000s of points) on top of the raw data (millions of points, line plot) and have them show together in such a way I can zoom into the interactive image, highlight the scatter points, and see them selected in the other plots.

I can do this fine if I just plot a line plot of the peak picked data, but obviously this isn’t the raw data.

I can get datashader to produce an interactive image of the raw data fine, but the documentation is a bit lacking for the InteractiveImage() function.

The basic datashader code is adapted from the Trajectory example https://anaconda.org/jbednar/trajectory/notebook

The final part is this:

p = base_plot()

InteractiveImage(p, create_image, throttle=200)

``

The bokeh code is just a couple of simple scatter or line plots, essentially this:

p1 = figure() #removed arguments for simplicity

p1.scatter() #removed arguments for simplicity

show(p1) # open a browser

``

Does this make sense?

Basically, is there a way to have the “interactive image” combined with other plots? Am I missing something obvious?

(For now I’m doing this in jupyter but I would like to get it working with bokeh serve eventually, though that is also proving tricky to get datashader to play ball with…)

Thanks