Bryan Van de Ven
@bryvdv, @BokehPlots
SciPy LA 2016
Bokeh Today
https://speakerdeck.com/bryanv/bokeh-scipyla-2016
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
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
Slide 4
Slide 4 text
Status
Slide 5
Slide 5 text
What’s
new?
Slide 6
Slide 6 text
New Annotations
• spans, bars, polys, hover policies
What’s
new?
Slide 7
Slide 7 text
New Annotations
• spans, bars, polys, hover policies
What’s
new?
Custom User Extensions
Slide 8
Slide 8 text
New Annotations
• spans, bars, polys, hover policies
What’s
new?
Custom User Extensions
Code cleanup, Expanded CI testing
Slide 9
Slide 9 text
New Annotations
• spans, bars, polys, hover policies
WebGL for lines and markers
What’s
new?
Custom User Extensions
Code cleanup, Expanded CI testing
Slide 10
Slide 10 text
New Annotations
• spans, bars, polys, hover policies
WebGL for lines and markers
What’s
new?
GeoJSON and Tile Renderers
Custom User Extensions
Code cleanup, Expanded CI testing
Slide 11
Slide 11 text
Stabilized and Expanded Charts API
New Annotations
• spans, bars, polys, hover policies
WebGL for lines and markers
What’s
new?
GeoJSON and Tile Renderers
Custom User Extensions
Code cleanup, Expanded CI testing
Slide 12
Slide 12 text
Stabilized and Expanded Charts API
New Annotations
• spans, bars, polys, hover policies
WebGL for lines and markers
What’s
new?
Python→JS compilation for CustomJS callbacks
GeoJSON and Tile Renderers
Custom User Extensions
Code cleanup, Expanded CI testing
Slide 13
Slide 13 text
New Bokeh Server
What’s
new?
Slide 14
Slide 14 text
New Bokeh Server
What’s
new?
• More robust and performant
• tornado and websocket protocol
Slide 15
Slide 15 text
New Bokeh Server
What’s
new?
• More robust and performant
• tornado and websocket protocol
• Simpler to use and deploy
• simple python scripts, no special classes
Slide 16
Slide 16 text
New Bokeh Server
What’s
new?
• More robust and performant
• tornado and websocket protocol
• Simpler to use and deploy
• simple python scripts, no special classes
• Extensive User Guide Documentation
Slide 17
Slide 17 text
New Bokeh Server
What’s
new?
• More robust and performant
• tornado and websocket protocol
• Simpler to use and deploy
• simple python scripts, no special classes
• Extensive User Guide Documentation
• Hosted examples at https://demo.bokehplots.com
Slide 18
Slide 18 text
Data Shader
What’s
new?
Slide 19
Slide 19 text
Data Shader
What’s
new?
• New project in the Bokeh GH org
• https://github.com/bokeh/datashader
Slide 20
Slide 20 text
Data Shader
What’s
new?
• New project in the Bokeh GH org
• https://github.com/bokeh/datashader
• Visualize millions and billions of points
• simple python scripts, no special classes
Slide 21
Slide 21 text
Data Shader
What’s
new?
• New project in the Bokeh GH org
• https://github.com/bokeh/datashader
• Visualize millions and billions of points
• simple python scripts, no special classes
• Efficient visual queries
Slide 22
Slide 22 text
Data Shader
What’s
new?
• New project in the Bokeh GH org
• https://github.com/bokeh/datashader
• Visualize millions and billions of points
• simple python scripts, no special classes
• Efficient visual queries
• Webinar: https://go.continuum.io/datashader
Slide 23
Slide 23 text
2014
Timeline
Slide 24
Slide 24 text
2015
Timeline
Slide 25
Slide 25 text
2016
Timeline
Slide 26
Slide 26 text
Community
Makes the Dream Work
Damian
Luke
Bryan
Fabio
Mateusz
Havoc
Almar
Peter
Maggie
Sarah
Brendan
Kevin
Slide 27
Slide 27 text
Community
Makes the Dream Work
New faces too:
Damian
Luke
Bryan
Fabio
Mateusz
Havoc
Almar
Peter
Maggie
Sarah
Brendan
Kevin
Slide 28
Slide 28 text
Community
Makes the Dream Work
New faces too:
Damian
Luke
Bryan
Fabio
Mateusz
Havoc
Almar
Peter
Maggie
Sarah
Brendan
Kevin
!!!
Slide 29
Slide 29 text
Community
Makes the Dream Work
New faces too:
Damian
Luke
Bryan
Fabio
Mateusz
Havoc
Almar
Peter
Maggie
Sarah
Brendan
Kevin
!!!
Special Thanks:
@merqurio, @justacec, @clairetang6,
@dennisobrien
Slide 30
Slide 30 text
Community
Makes the Dream Work
New faces too:
Damian
Luke
Bryan
Fabio
Mateusz
Havoc
Almar
Peter
Maggie
Sarah
Brendan
Kevin
!!!
Special Thanks:
@merqurio, @justacec, @clairetang6,
@dennisobrien
Slide 31
Slide 31 text
Examples
Slide 32
Slide 32 text
Simple apps for data science
Server
Slide 33
Slide 33 text
Concentrate on your work
Server
Slide 34
Slide 34 text
Concentrate on your work
Completely written in Python, no HTML or CSS or “webapp” coding
Server
Slide 35
Slide 35 text
Concentrate on your work
Completely written in Python, no HTML or CSS or “webapp” coding
Server
Simple python scripts, no special classes of frameworks
Slide 36
Slide 36 text
Concentrate on your work
Completely written in Python, no HTML or CSS or “webapp” coding
Server
Simple python scripts, no special classes of frameworks
Useful for exploratory analysis or sharing and deploying
Slide 37
Slide 37 text
Concentrate on your work
Completely written in Python, no HTML or CSS or “webapp” coding
Utilizes only out-of the box features of Bokeh 0.11.1
Server
Simple python scripts, no special classes of frameworks
Useful for exploratory analysis or sharing and deploying
Slide 38
Slide 38 text
Streaming Time Series
https://youtu.be/NUrhOj3DzYs
Streaming
Slide 39
Slide 39 text
Streaming Time Series
https://youtu.be/NUrhOj3DzYs
Streaming
Efficient data, Efficient code
Plotting commands, application code, simulation, everything < 100 LOC
Performance enhancements (only send latest data points)
Further features and improvements planned
Streaming
Slide 44
Slide 44 text
front, Python in the back
Customize
Slide 45
Slide 45 text
front, Python in the back
Customize
Slide 46
Slide 46 text
Scratch Your Own Itch
Customize
Slide 47
Slide 47 text
Scratch Your Own Itch
Customize
Extend any aspect of Bokeh with custom models
Slide 48
Slide 48 text
Scratch Your Own Itch
Customize
Extend any aspect of Bokeh with custom models
Lowers the bar for trying out new ideas
Slide 49
Slide 49 text
Scratch Your Own Itch
Customize
Extend any aspect of Bokeh with custom models
Users don’t have to wait on core team schedule
Lowers the bar for trying out new ideas
Slide 50
Slide 50 text
Scratch Your Own Itch
Customize
Extend any aspect of Bokeh with custom models
Users don’t have to wait on core team schedule
The future: Atom-style user extension repository
Lowers the bar for trying out new ideas
Slide 51
Slide 51 text
“Billions and billions…”
Datashader
Slide 52
Slide 52 text
Pipelines for visual queries
Datashader
Slide 53
Slide 53 text
Pipelines for visual queries
Datashader
Bokeh passes data directly into the browser, where users can interact with it
Slide 54
Slide 54 text
Pipelines for visual queries
Datashader
Bokeh passes data directly into the browser, where users can interact with it
For very large datasets (hundreds of millions or billions of points), passing all the data
into the browser is not feasible
Slide 55
Slide 55 text
Pipelines for visual queries
Datashader
Bokeh passes data directly into the browser, where users can interact with it
Datashader renders into an off-screen buffer and can handle arbitrarily large datasets
without downsampling
For very large datasets (hundreds of millions or billions of points), passing all the data
into the browser is not feasible
Slide 56
Slide 56 text
Pipelines for visual queries
Datashader
Bokeh passes data directly into the browser, where users can interact with it
Datashader renders into an off-screen buffer and can handle arbitrarily large datasets
without downsampling
Powered by Dask and Numba
For very large datasets (hundreds of millions or billions of points), passing all the data
into the browser is not feasible
Slide 57
Slide 57 text
Speaking of Dask
Dask
http://dask.pydata.org/en/latest/
Slide 58
Slide 58 text
Speaking of Dask
Dask
http://dask.pydata.org/en/latest/
Slide 59
Slide 59 text
Speaking of Dask
Dask
http://dask.pydata.org/en/latest/
Comes with a Bokeh app for monitoring
performance of distributed array tasks
Slide 60
Slide 60 text
Speaking of Dask
Dask
http://dask.pydata.org/en/latest/
Comes with a Bokeh app for monitoring
performance of distributed array tasks
CPU and memory and communications use
across the cluster over time
Slide 61
Slide 61 text
Speaking of Dask
Dask
http://dask.pydata.org/en/latest/
Comes with a Bokeh app for monitoring
performance of distributed array tasks
“Invaluable for understanding and optimizing
distributed computing performance.”
CPU and memory and communications use
across the cluster over time
Slide 62
Slide 62 text
Speaking of Dask
Dask
http://dask.pydata.org/en/latest/
Comes with a Bokeh app for monitoring
performance of distributed array tasks
“Invaluable for understanding and optimizing
distributed computing performance.”
“It's not something for which I need to go out
and find a web developer to help me with.”
CPU and memory and communications use
across the cluster over time
Slide 63
Slide 63 text
Not just for Python
RBokeh
http://hafen.github.io/rbokeh
Plays well with R ecosystem: HTMLwidget, RMarkdown…
Slide 64
Slide 64 text
Upcoming
Slide 65
Slide 65 text
0.12
Slide 66
Slide 66 text
• Arrows, Labels, Colorbars
0.12
Slide 67
Slide 67 text
• Arrows, Labels, Colorbars
• Legend and Hover improvements
0.12
Slide 68
Slide 68 text
• Arrows, Labels, Colorbars
• Legend and Hover improvements
• New high-level Chord chart
0.12
Slide 69
Slide 69 text
• Arrows, Labels, Colorbars
• Legend and Hover improvements
• New high-level Chord chart
• New JS / TypeScript API
0.12
Slide 70
Slide 70 text
Real Soon Now
BokehJS on its own
Slide 71
Slide 71 text
Real Soon Now
BokehJS on its own
Author in TypeScript or JavaScript
Direct port of bokeh.plotting
Available on NPM
New high-level BokehJS Charts API
Slide 72
Slide 72 text
• Arrows, Labels, Colorbars
• Legend and Hover improvements
• New high-level Chord chart
• New JS / TypeScript API
• Foundational layout improvements
• Custom server templates
0.12
Slide 73
Slide 73 text
• Computed data source columns
• Arrows, Labels, Colorbars
• Legend and Hover improvements
• New high-level Chord chart
• New JS / TypeScript API
• Foundational layout improvements
• Custom server templates
0.12
Slide 74
Slide 74 text
• Computed data source columns
• Lots of bug fixes
• Arrows, Labels, Colorbars
• Legend and Hover improvements
• New high-level Chord chart
• New JS / TypeScript API
• Foundational layout improvements
• Custom server templates
0.12
Slide 75
Slide 75 text
• Computed data source columns
• Lots of bug fixes
• and then…
• Arrows, Labels, Colorbars
• Legend and Hover improvements
• New high-level Chord chart
• New JS / TypeScript API
• Foundational layout improvements
• Custom server templates
0.12
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
1.0
Slide 80
Slide 80 text
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
1.0
Slide 81
Slide 81 text
1.0
(and beyond)
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
Slide 82
Slide 82 text
1.0
(and beyond)
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
• NumFOCUS fiscal sponshorship
Slide 83
Slide 83 text
1.0
(and beyond)
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
• NumFOCUS fiscal sponshorship
• LaTeX labels, Networks/Graphs
Slide 84
Slide 84 text
1.0
(and beyond)
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
• NumFOCUS fiscal sponshorship
• LaTeX labels, Networks/Graphs
• Scriptable animations and transitions
Slide 85
Slide 85 text
1.0
(and beyond)
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
• NumFOCUS fiscal sponshorship
• LaTeX labels, Networks/Graphs
• Scriptable animations and transitions
• Bokeh “develop” mode
Slide 86
Slide 86 text
1.0
(and beyond)
• API guarantees (Semantic Versioning)
• Visual / Design pass
• BEP for project governance
• July 2016 target
• NumFOCUS fiscal sponshorship
• LaTeX labels, Networks/Graphs
• Scriptable animations and transitions
• Bokeh “develop” mode
• SVG output
Slide 87
Slide 87 text
Call To Action
Install Bokeh and Data Shader and provide feedback
• BSD license for everything (JS, Python, server)
• https://github.com/bokeh/bokeh
• https://github.com/bokeh/datashader