Essentially I want this, but where when the plot loads, some legend entries are already muted or hidden and the user clicks to show them.
I have tried to hunt around Bokeh's docs but can't find the setting I need.
This code does what you want (tested on Bokeh v1.0.4). You just need to set the visible
property on your glyph renderer.
import pandas as pd
from bokeh.palettes import Spectral4
from bokeh.plotting import figure, output_file, show
from bokeh.sampledata.stocks import AAPL, IBM, MSFT, GOOG
p = figure(plot_width = 800, plot_height = 250, x_axis_type = "datetime")
p.title.text = 'Click on legend entries to hide the corresponding lines'
stocks = ["AAPL", "IBM", "MSFT", "GOOG"]
lines = {}
for data, name, color in zip([AAPL, IBM, MSFT, GOOG], stocks, Spectral4):
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
lines[name] = p.line(df['date'], df['close'], line_width = 2, color = color, alpha = 0.8, legend = name)
lines["AAPL"].visible = False
p.legend.location = "top_left"
p.legend.click_policy = "hide"
output_file("interactive_legend.html", title = "interactive_legend.py example")
show(p)
Result:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With