交互式图例#
图例 添加到 Bokeh 绘图后可以设置为交互式的,以便点击或轻触图例条目将隐藏或静音绘图中的相应字形。这些模式通过在 Legend
上将 click_policy
属性设置为 "hide"
或 "mute"
来激活。
注意
交互式图例仅适用于“per-glyph”图例。分组图例尚不支持以下描述的功能。
隐藏字形#
有时,可能需要通过单击 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.2
和 muted_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)