Bokeh 2.3.3 -
Even with a stable release, you may occasionally encounter issues. Here's a guide to common problems and how to resolve them, along with strategies to keep your visualizations running smoothly.
: Built-in tools for zooming, panning, and hovering allow users to explore data dynamically.
In the software lifecycle, patch releases like 2.3.3 serve as the "finishing sander" for broader feature sets. Developers using Bokeh for high-stakes data dashboards require the library to behave predictably across various browser environments and CSS configurations. Version 2.3.3 addressed several "edge case" bugs that previously caused visual regressions or functional hiccups in complex layouts. Key Technical Improvements bokeh 2.3.3
Some users complain that hover tooltips show ??? for special characters. : Explicitly set a css_classes property and define font-family in your own CSS file.
Here’s a helpful reference paper for — structured as a quick-start + cheat sheet for users who need to work with this specific version. Even with a stable release, you may occasionally
Decide where your plot will be saved. This line creates an HTML file called "my_plot.html" in your current working directory.
At its heart, Bokeh is an interactive visualization library designed specifically for modern web browsers. Unlike traditional plotting libraries that produce static images, Bokeh generates visualizations as interactive HTML documents. This fundamental difference unlocks a new dimension of data exploration, allowing users to pan, zoom, hover, and click to uncover insights that static charts cannot reveal. In the software lifecycle, patch releases like 2
Archived docs: https://docs.bokeh.org/en/2.3.3/
Generate standalone HTML files, embed plots directly into Jupyter Notebooks, or build multi-page applications using the Bokeh Server.
from bokeh.plotting import figure, output_file, show from bokeh.models import ColumnDataSource, HoverTool, CustomJS from bokeh.layouts import column from bokeh.models.widgets import DataTable, TableColumn import numpy as np # 1. Prepare the data np.random.seed(42) x_data = np.random.rand(50) * 100 y_data = np.random.rand(50) * 100 desc = [f"Point i" for i in range(50)] source = ColumnDataSource(data=dict(x=x_data, y=y_data, desc=desc)) # 2. Configure output file output_file("bokeh_233_demo.html", title="Bokeh 2.3.3 Legacy Demo") # 3. Create a figure p = figure( title="Interactive Scatter Plot (Bokeh 2.3.3)", plot_width=600, plot_height=400, tools="pan,box_zoom,wheel_zoom,reset,save", toolbar_location="above" ) # 4. Add glyphs renderer = p.circle('x', 'y', size=10, source=source, color="navy", alpha=0.5, hover_color="firebrick", hover_alpha=1.0) # 5. Configure HoverTool specifically for Bokeh 2.x syntax hover = HoverTool(toolnames=[renderer]) hover.tooltips = [ ("Index", "$index"), ("Coordinates", "($x, $y)"), ("Description", "@desc"), ] p.add_tools(hover) # 6. Add a connected Data Table columns = [ TableColumn(field="desc", title="Description"), TableColumn(field="x", title="X Value"), TableColumn(field="y", title="Y Value"), ] data_table = DataTable(source=source, columns=columns, width=600, height=200) # 7. Layout and display layout = column(p, data_table) show(layout) Use code with caution. Key Syntax Reminders for Version 2.3.3:
Bokeh 2.3.3 automatically tries to load BokehJS (the client-side library) from a CDN. If you're working in an air-gapped or offline environment, you can download the BokehJS static files separately and serve them locally.