A relatively simple plot (scroll down to see the code): http://bokeh.pydata.org/plot_gallery/correlation.html
The simplest example plot in the repo: https://github.com/ContinuumIO/bokeh/blob/master/examples/pl...
http://bokeh.pydata.org/plot_gallery/iris.html
That has a selection tool you can play around with.
As for the architecture, BokehJS is built entirely on top of HTML canvas. The python bokeh library sends data and plot specifications to the browser, which uses BokehJS to render the plot and handle interactive tools, etc.
EDIT: Ok, everything but the zoom works. How do you zoom?
If that is not the issue, please file a ticket on GitHub!
The python side produces json that represents the objects to be plotted. Python only writes a small amount of js to start the js running. For the most part python just produces json objects that the js side reads.
There could be alternate implementations of the python side that still use the same js rendering logic. You could even write a nicer higher-level js api that wraps the low-level component construction.
I talked about this at PyData NYC. Here is my notebook (which I am in the process of updating for bokeh 0.3) http://nbviewer.ipython.org/urls/raw.github.com/paddymul/bok...
It was designed foremost to make graphs pertinent for scientific and engineering applications: https://plot.ly/~alex/76/
(Disclosure: I'm a dev @Plotly)
D3 and its children produce some awesome visualizations, but the bandwidth does not exist for me to begin developing apps in a language I don't have much experience in.
If something like Bokeh allows me to live mostly in Python, it becomes even more interesting.