structure updates
This commit is contained in:
122
tech_docs/python/Bokeh.md
Normal file
122
tech_docs/python/Bokeh.md
Normal file
@@ -0,0 +1,122 @@
|
||||
A very useful Python library, particularly for creating interactive visualizations in web browsers, is `Bokeh`. Bokeh enables the building of complex statistical plots quickly and through simple commands. It's highly versatile, allowing for the creation of interactive plots, dashboards, and data applications with rich, web-based visualization capabilities. Below is a concise reference guide for common use cases with `Bokeh`, formatted in Markdown syntax:
|
||||
|
||||
# `Bokeh` Reference Guide
|
||||
|
||||
## Installation
|
||||
```
|
||||
pip install bokeh
|
||||
```
|
||||
|
||||
## Basic Plotting
|
||||
|
||||
### Importing Bokeh
|
||||
```python
|
||||
from bokeh.plotting import figure, show, output_file
|
||||
```
|
||||
|
||||
### Creating a Simple Line Plot
|
||||
```python
|
||||
# Prepare some data
|
||||
x = [1, 2, 3, 4, 5]
|
||||
y = [6, 7, 2, 4, 5]
|
||||
|
||||
# Output to static HTML file (opens in browser)
|
||||
output_file("lines.html")
|
||||
|
||||
# Create a new plot with a title and axis labels
|
||||
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')
|
||||
|
||||
# Add a line renderer with legend and line thickness
|
||||
p.line(x, y, legend_label="Temp.", line_width=2)
|
||||
|
||||
# Show the results
|
||||
show(p)
|
||||
```
|
||||
|
||||
## Interactive Plots
|
||||
|
||||
### Adding Tools
|
||||
```python
|
||||
from bokeh.models import PanTool, ResetTool, HoverTool
|
||||
|
||||
# Adding pan, reset functionality
|
||||
p.add_tools(PanTool(), ResetTool())
|
||||
|
||||
# Adding hover tool
|
||||
hover = HoverTool()
|
||||
hover.tooltips=[
|
||||
("Index", "$index"),
|
||||
("(x,y)", "($x, $y)"),
|
||||
]
|
||||
p.add_tools(hover)
|
||||
```
|
||||
|
||||
### Widgets and Interactivity
|
||||
```python
|
||||
from bokeh.layouts import column
|
||||
from bokeh.models import Slider, Button
|
||||
from bokeh.io import curdoc
|
||||
|
||||
# Create some widgets
|
||||
slider = Slider(start=0, end=10, value=1, step=.1, title="Stuff")
|
||||
button = Button(label="Press me")
|
||||
|
||||
# Update function
|
||||
def update():
|
||||
# Update function for widgets
|
||||
...
|
||||
|
||||
# Button click event
|
||||
button.on_click(update)
|
||||
|
||||
# Arrange widgets and plot into a layout
|
||||
layout = column(slider, button, p)
|
||||
|
||||
# Add the layout to the current document
|
||||
curdoc().add_root(layout)
|
||||
```
|
||||
|
||||
## Embedding and Linking Plots
|
||||
|
||||
### Linking Plots Together
|
||||
```python
|
||||
from bokeh.layouts import gridplot
|
||||
|
||||
# Linking axes
|
||||
p1 = figure(width=250, height=250)
|
||||
p2 = figure(width=250, height=250, x_range=p1.x_range, y_range=p1.y_range)
|
||||
p3 = figure(width=250, height=250, x_range=p1.x_range)
|
||||
|
||||
# Arrange plots in a grid
|
||||
grid = gridplot([[p1, p2], [None, p3]])
|
||||
|
||||
show(grid)
|
||||
```
|
||||
|
||||
### Embedding Bokeh Plots in HTML
|
||||
```python
|
||||
from bokeh.embed import components
|
||||
|
||||
script, div = components(p)
|
||||
|
||||
# `script` is a <script> tag that contains the data for your plot
|
||||
# `div` is a <div> tag that the plot view is loaded into
|
||||
```
|
||||
|
||||
## Server Applications
|
||||
|
||||
### Running a Bokeh Server
|
||||
```shell
|
||||
# Save your script as, e.g., `myapp.py`
|
||||
# Run the Bokeh server
|
||||
bokeh serve --show myapp.py
|
||||
```
|
||||
|
||||
```python
|
||||
# Inside myapp.py, use curdoc to add your layout, figures, etc.
|
||||
from bokeh.io import curdoc
|
||||
# Define plots and widgets here
|
||||
curdoc().add_root(layout)
|
||||
```
|
||||
|
||||
`Bokeh` excels in creating interactive and visually appealing plots that can be easily embedded into web pages or displayed as part of a Python notebook. Its capability to handle large, dynamic data sets makes it suitable for real-time data applications, and its interactivity features engage users in exploring the data more deeply. This guide introduces the basics, but `Bokeh`'s comprehensive features enable much more complex data visualization and interactive applications.
|
||||
Reference in New Issue
Block a user