Bryan Van de Ven
@bigreddot
Oct 2018
A Dash of Bokeh
Slide 2
Slide 2 text
No JavaScript
Bokeh ?
https://bokeh.pydata.org/en/latest
Interactive visualization, widgets, and tools
For the browser, with or without a server
Versatile and high-level graphics
Streaming, dynamic, large data
What
Slide 3
Slide 3 text
No JavaScript
No JavaScript
Bokeh ?
https://bokeh.pydata.org/en/latest
Interactive visualization, widgets, and tools
For the browser, with or without a server
Versatile and high-level graphics
Streaming, dynamic, large data
What
Slide 4
Slide 4 text
Simple (to write) Apps for Data Science
What
Slide 5
Slide 5 text
Concentrate on your work
Why
Slide 6
Slide 6 text
Concentrate on your work
Mostly or completely written in Python, little HTML or CSS coding
Why
Slide 7
Slide 7 text
Concentrate on your work
Mostly or completely written in Python, little HTML or CSS coding
Simple python scripts, no special classes of frameworks
Why
Slide 8
Slide 8 text
Concentrate on your work
Mostly or completely written in Python, little HTML or CSS coding
Simple python scripts, no special classes of frameworks
Useful for exploratory analysis or sharing and publishing
Why
Slide 9
Slide 9 text
Concentrate on your work
Mostly or completely written in Python, little HTML or CSS coding
Simple python scripts, no special classes of frameworks
Useful for exploratory analysis or sharing and publishing
Automatically mirrors and synchronizes Python and browser state
Why
Slide 10
Slide 10 text
Concentrate on your work
Mostly or completely written in Python, little HTML or CSS coding
Connect the full PyData stack to interactive web apps
Simple python scripts, no special classes of frameworks
Useful for exploratory analysis or sharing and publishing
Automatically mirrors and synchronizes Python and browser state
Why
Slide 11
Slide 11 text
Users Gonna Use
Who
Slide 12
Slide 12 text
KeplerGO/lightkurve
Who
Slide 13
Slide 13 text
KeplerGO/lightkurve
Who
Slide 14
Slide 14 text
Bokeh
Today
Slide 15
Slide 15 text
Circa June 2014
Who
Slide 16
Slide 16 text
Circa Yesterday 2018
Who
Slide 17
Slide 17 text
Makes the Dream Work
Damian
Luke
Bryan
Philipp
Mateusz
Havoc
Jean-Luc
Peter
Maggie
Sarah
Brendan
Julia
Who
Slide 18
Slide 18 text
Makes the Dream Work
New faces too: !!!
Damian
Luke
Bryan
Philipp
Mateusz
Havoc
Jean-Luc
Peter
Maggie
Sarah
Brendan
Julia
Who
Slide 19
Slide 19 text
Makes the Dream Work
Special Recent Thanks:
Karel Van de Plassche, Eugene Pakhomov, Anthony
Doucuoliagos.
New faces too: !!!
Damian
Luke
Bryan
Philipp
Mateusz
Havoc
Jean-Luc
Peter
Maggie
Sarah
Brendan
Julia
Who
Slide 20
Slide 20 text
Makes the Dream Work
Special Recent Thanks:
Karel Van de Plassche, Eugene Pakhomov, Anthony
Doucuoliagos.
New faces too: !!!
Damian
Luke
Bryan
Philipp
Mateusz
Havoc
Jean-Luc
Peter
Maggie
Sarah
Brendan
Julia
Who
Slide 21
Slide 21 text
one point oh
!!!
Slide 22
Slide 22 text
one point oh
Support for MultiPolygons with holes
!!!
Slide 23
Slide 23 text
one point oh
Support for MultiPolygons with holes
Several fixes and improvements to DataTable
!!!
Slide 24
Slide 24 text
one point oh
Support for MultiPolygons with holes
Several fixes and improvements to DataTable
!!!
CustomAction for user-defined Toolbar buttons
Slide 25
Slide 25 text
one point oh
Support for MultiPolygons with holes
Several fixes and improvements to DataTable
Plain JSON export/embed functions
!!!
CustomAction for user-defined Toolbar buttons
Slide 26
Slide 26 text
one point oh
Support for MultiPolygons with holes
Several fixes and improvements to DataTable
Plain JSON export/embed functions
!!!
CustomAction for user-defined Toolbar buttons
Callback to allow AjaxDataSource to adapt JSON responses
Slide 27
Slide 27 text
one point oh
Support for MultiPolygons with holes
Several fixes and improvements to DataTable
Plain JSON export/embed functions
Scatter glyph for parameterizable marker type
!!!
CustomAction for user-defined Toolbar buttons
Callback to allow AjaxDataSource to adapt JSON responses
Slide 28
Slide 28 text
one point oh
Support for MultiPolygons with holes
Reuse webdrivers for faster PNG/SVG export by default
Several fixes and improvements to DataTable
Plain JSON export/embed functions
Scatter glyph for parameterizable marker type
!!!
CustomAction for user-defined Toolbar buttons
Callback to allow AjaxDataSource to adapt JSON responses
Slide 29
Slide 29 text
one point oh
Support for MultiPolygons with holes
Reuse webdrivers for faster PNG/SVG export by default
Several fixes and improvements to DataTable
Plain JSON export/embed functions
Scatter glyph for parameterizable marker type
!!!
CustomAction for user-defined Toolbar buttons
Callback to allow AjaxDataSource to adapt JSON responses
Faster import times
Slide 30
Slide 30 text
Basic
Principles
Slide 31
Slide 31 text
Building Blocks
How
Slide 32
Slide 32 text
Building Blocks
How
Slide 33
Slide 33 text
Building Blocks
How
Slide 34
Slide 34 text
Not just for Python
http://hafen.github.io/rbokeh
Plays well with R ecosystem: HTMLwidget, RMarkdown…
Slide 35
Slide 35 text
Map Visual Properties To Data Columns
How
Pick what graphical primitives to use, provide the data, and specify how
to map visual properties to data fields. Bokeh will take care of the rest.
Slide 36
Slide 36 text
Streaming Data
Two data source methods:
.stream to append data
incrementally to column ends
.patch for random access
updates anywhere
How
Slide 37
Slide 37 text
Styling
How
Simple YAML or JSON format
Useful for a consistent look across plots
Any Bokeh property can be targeted
Slide 38
Slide 38 text
Some User Contributed Styles
How
Caliber Minimal Dark
Monokai Dark
Slide 39
Slide 39 text
Built-in Layouts
How
Bokeh offers "rows and columns" layouts
Slide 40
Slide 40 text
Built-in Layouts
How
Slide 41
Slide 41 text
Built-in Layouts
How
Slide 42
Slide 42 text
Built-in Layouts
How
Bokeh objects can be responsive
Slide 43
Slide 43 text
Built-in Layouts
How
Bokeh objects can be responsive
Some problems and known issues
Slide 44
Slide 44 text
Built-in Layouts
How
Bokeh objects can be responsive
Improved, simpler layout system for 1.1
Some problems and known issues
Slide 45
Slide 45 text
Custom Templates
How
Import embed function
Load BokehJS resources
Embed Bokeh objects
Boilerplate script
Slide 46
Slide 46 text
Custom Templates
How
Slide 47
Slide 47 text
Dask UI Uses CSS Grid
How
http://examples.dask.org
Slide 48
Slide 48 text
Custom Extensions
http://bokeh.pydata.org/en/latest/docs/user_guide/extensions.html
Python class interface
JavaScript implementation
Normal usage
How
Slide 49
Slide 49 text
Custom Extensions
Add capability for…
How
Slide 50
Slide 50 text
Custom Extensions
Add capability for…
Wrapping different widgets
How
Slide 51
Slide 51 text
Custom Extensions
Add capability for…
Wrapping different widgets
Adapting 3D JavaScript libraries
How
Slide 52
Slide 52 text
Custom Extensions
Add capability for…
Wrapping different widgets
Adapting 3D JavaScript libraries
Adding LaTeX labels
How
Slide 53
Slide 53 text
Custom Extensions
Add capability for…
Wrapping different widgets
Adapting 3D JavaScript libraries
Adding LaTeX labels
Community doesn’t have to wait!
How
Slide 54
Slide 54 text
Bokeh Server Applications
How
Bokeh Server automatically keeps Python and JavaScript in sync
Slide 55
Slide 55 text
Bokeh Server Applications
How
Python callbacks can execute on property changes (and JS will react too)
Slide 56
Slide 56 text
Bokeh Server Applications
How
Document level callbacks can perform server-driven updates
Slide 57
Slide 57 text
An
Example
Slide 58
Slide 58 text
Goal
Example of streaming API
Connects to PyData tools
Custom layout for nice look
Demonstrates:
Slide 59
Slide 59 text
Goal
Example of streaming API
Connects to PyData tools
Custom layout for nice look
Demonstrates:
Call to Action
Install Bokeh and provide feedback
• BSD license for everything (JS, Python, server)
• https://github.com/Bokeh/bokeh
Do
Slide 67
Slide 67 text
Call to Action
Install Bokeh and provide feedback
• BSD license for everything (JS, Python, server)
• https://github.com/Bokeh/bokeh
Donate to Bokeh via NumFOCUS
• https://www.flipcause.com/secure/cause_pdetails/MzE5NjE=
Do
Slide 68
Slide 68 text
Call to Action
Install Bokeh and provide feedback
• BSD license for everything (JS, Python, server)
• https://github.com/Bokeh/bokeh
Engage companies for custom work
• Code integration, analytical and visualization expertise
• Contact us to be put in touch bokehplots@gmail.com
Donate to Bokeh via NumFOCUS
• https://www.flipcause.com/secure/cause_pdetails/MzE5NjE=
Do