Interactive Legends — Anaconda Enterprise 4.4 documentation

Anaconda Enterprise: Documentation

# Interactive Legends

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 legend features currently work on “per-glyph” legends. Legends that are created by specifying a column to automatically group do no yet work with 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, 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'

    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=name)

    p.legend.location = "top_left"
    p.legend.click_policy="hide"

    output_file("interactive_legend.html", title="interactive_legend.py example")

    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 does 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, 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 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=name)

    p.legend.location = "top_left"
    p.legend.click_policy="mute"

    output_file("interactive_legend.html", title="interactive_legend.py example")

    show(p)