Python 单击以暂停Altair绘图中的鼠标悬停?

Python 单击以暂停Altair绘图中的鼠标悬停?,python,altair,Python,Altair,我有一个牛郎星图表柱状图,我的垂直鼠标在柱状图上画了一条水平线,突出显示最近的匹配条。我想创建一个单击选择,冻结水平线和高亮显示的鼠标悬停选择,然后显示当前高亮显示栏的工具提示。然后,再次单击,我想删除工具提示并继续鼠标悬停操作 我该怎么做 import altair as alt import pandas as pd # Selects nearest bar nearest = alt.selection(type='single', nearest=True, on='mouseo

我有一个牛郎星图表柱状图,我的垂直鼠标在柱状图上画了一条水平线,突出显示最近的匹配条。我想创建一个单击选择,冻结水平线和高亮显示的鼠标悬停选择,然后显示当前高亮显示栏的工具提示。然后,再次单击,我想删除工具提示并继续鼠标悬停操作

我该怎么做

import altair as alt
import pandas as pd


# Selects nearest bar
nearest = alt.selection(type='single', nearest=True, on='mouseover',
                        fields=['cost'], empty='none')

# Gives y values
selectors = alt.Chart(df).mark_point().encode(
    y='cost:Q',
    opacity=alt.value(0),
).add_selection(
    nearest
)

# Base line
line = alt.Chart(df).mark_line(interpolate='basis', opacity= 0).encode(
    x='x0:Q',
    y='cost:Q',
)

# text labels
text = line.mark_text(align='left', dx=5, dy=-5).encode(
    text=alt.condition(nearest, 'cost:Q', alt.value(' '))
)

# Draw a rule at the location of the selection
rules = alt.Chart(df).mark_rule(color='gray').encode(
    y='cost:Q',
).transform_filter(
    nearest
)

# Draw points on nearest bar
points = line.mark_point().encode(
    opacity=alt.condition(nearest, alt.value(1), alt.value(0))
)

# encode data
data = alt.Chart(dftemp).mark_rect().encode(
    x=alt.X('x0:Q', title='cap', scale = alt.Scale(clamp = True)),
    x2='x1',
    y=alt.Y('cost:Q', title='Cost ($)'),
    color='tech:N',
    tooltip=["tech", "cap", "Cost ($)"], 
    opacity = alt.condition(nearest, alt.value(1.0), alt.value(0.5)), 
    
).interactive(bind_y = False)


# Layer in chart
alt.layer(
    line, rules, data, points, selectors, text
).properties(
    width=1000, height=300
)