Q : do you think this could be done in Bokeh ?...


I’ve been going through the Caktus Group’s pick of the best PyCon keynotes, and they are all excellent in their own right.
But Sarah Bird’s Bokeh pitch rang a particular bell, because it relates to a problem I’ve being mulling over for a while.

short, at my workplace we have a rolling demo on a big monitor, which is very popular with the top brass, visitors and newspeople.
is an accelerated plot, day for day, of various types of events occurring in our big pet project, over a map of France (continental and overseas).
If you want to see it in action just unzip the attached archive and load the HTML file.
(the data is sanitized of course, but otherwise it is an actual snapshot of our demo as of four months ago)

now it is a naive in-browser implementation using Leaflet and javascript (eek), although Python is heavily used beforehand
to assemble and format the json data from many different sources.

you run the demo you may find that it tends to bog down gradually as the number of events increases, or if too many happen at the same time.
when the script is done, the browser feels sluggish (zooming , panning etc.). Anyway, not much user interaction is available,
except for a right-click context menu to quickly access overseas regions, and back to the Continent.
And this is with just about a year of data, and some 4,600 events.
project is expected to last several more years, and hit around 16,000-17,000 events, so I think it’s not going to scale well :slight_smile:

Sarah’s Bokeh demo made me dream of something similar - but better - that I
could code and run entirely in Python, that would scale over time,
could be made more versatile and interactive (like selecting event types or time frames or regions dynamically, stop 'n go, etc.).

the question is : would you say that this dream looks realistic (even if it means waiting for the upcoming
Bokeh.js to materialize, for example) ?
Or is it really out of scope, and I should look around for some other solution ?

Sarah seems to think it should be doable, but recommended that I also ask the question here, so here I am…

Thanks in advance for any advice or opinion,


Demo.zip (2.43 MB)