交互式图例#

添加到 Bokeh 图表中的图例 可以设置为交互式,以便单击或点击图例条目可以隐藏或静音图表中相应的图形。这些模式通过将click_policy 属性设置为 "hide""mute" 来激活,如以下示例所示

注意

交互式图例仅适用于“每个图形”图例。分组图例尚不支持以下功能。

隐藏图形#

有时需要通过单击 Legend 中的条目来隐藏图形。在 Bokeh 中,可以通过将图例 click_policy 属性设置为 "hide" 来实现,如下面的示例所示

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)

静音图形#

其他时候,更希望图例交互静音图形,而不是完全隐藏它。在这种情况下,将 click_policy 属性设置为 "mute"。此外,还需要指定“静音图形”的视觉属性。通常,这与为选中和未选中图形悬停检查 设置样式的方式相同。在下面的示例中,muted_alpha=0.2muted_color=color 传递给 circle 以指定静音线应以较低的 alpha 值绘制静音图形。

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)