Legends added to Bokeh plots can be made interactive so that clicking or tapping on the legend entries will hide or mute the corresponding glyph in a plot. These modes are activated by setting the click_policy
property on a Legend
to either "hide"
or "mute"
.
Note
Interactive legends only work on âper-glyphâ legends. Grouped legends do not yet support the features described below.
Hiding glyphs#Sometimes it is desirable to be able to hide glyphs by clicking on an entry in a Legend
. In Bokeh this can be accomplished by setting the legend click_policy
property to "hide"
as shown in the example below:
import pandas as pd from bokeh.palettes import Spectral4 from bokeh.plotting import figure, show from bokeh.sampledata.stocks import AAPL, GOOG, IBM, MSFT p = figure(width=800, height=250, x_axis_type="datetime") p.title.text = 'Click on legend entries to hide the corresponding lines' for data, name, color in zip([AAPL, IBM, MSFT, GOOG], ["AAPL", "IBM", "MSFT", "GOOG"], Spectral4): df = pd.DataFrame(data) df['date'] = pd.to_datetime(df['date']) p.line(df['date'], df['close'], line_width=2, color=color, alpha=0.8, legend_label=name) p.legend.location = "top_left" p.legend.click_policy="hide" show(p)Muting glyphs#
Other times it is preferable for legend interaction to mute a glyph, instead of hiding it entirely. In this case, set click_policy
property to "mute"
. Additionally, the visual properties of a âmuted glyphâ also need to be specified. In general, this is done in exactly the same way as for Selected and unselected glyphs or Hover inspections. In the example below, muted_alpha=0.2
and muted_color=color
are passed to circle
to specify that muted lines should be drawn with a low alpha muted glyph.
import pandas as pd from bokeh.palettes import Spectral4 from bokeh.plotting import figure, show from bokeh.sampledata.stocks import AAPL, GOOG, IBM, MSFT p = figure(width=800, height=250, x_axis_type="datetime") p.title.text = 'Click on legend entries to mute the corresponding lines' for data, name, color in zip([AAPL, IBM, MSFT, GOOG], ["AAPL", "IBM", "MSFT", "GOOG"], Spectral4): df = pd.DataFrame(data) df['date'] = pd.to_datetime(df['date']) p.line(df['date'], df['close'], line_width=2, color=color, alpha=0.8, muted_color=color, muted_alpha=0.2, legend_label=name) p.legend.location = "top_left" p.legend.click_policy="mute" show(p)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4