You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altair图表中实现基于数据点类型的条件式Tooltip解决方案咨询

Altair图表中实现基于数据点类型的条件式Tooltip解决方案咨询

嘿,我完全懂你想实现的效果——根据数据点的Origin类型,显示不同的Tooltip内容对吧?你尝试用alt.condition的思路是对的,只是用法上有点小问题,导致没达到预期效果。

咱们来一步步修正:

首先,原代码里的一个小细节:数据集cars里的Origin取值是USA、Europe和Japan,你写的EUA应该是笔误,得改成USA才能匹配到对应的数据哦。

然后是tooltip里alt.condition的正确用法:你直接把字段数组传给条件分支是不行的,alt.condition的每个分支需要是有效的编码对象,所以得用alt.Tooltip()把字段列表包裹起来,让Altair明确识别这是Tooltip的配置。

修正后的完整代码如下:

import altair as alt
from vega_datasets import data

source = data.cars()

chart = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    tooltip=alt.condition(
        alt.datum.Origin == 'USA',
        alt.Tooltip(['Name', 'Horsepower']),
        alt.Tooltip(['Name', 'Miles_per_Gallon'])
    )
)

chart.save('tooltip.html')

另外还有一种更灵活的写法,你可以单独控制每个Tooltip字段的显示与否,适合需要混合多个条件字段的场景:

import altair as alt
from vega_datasets import data

source = data.cars()

chart = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    tooltip=[
        'Name',
        # 当Origin是USA时显示Horsepower,否则不显示
        alt.condition(alt.datum.Origin == 'USA', 'Horsepower', alt.Undefined()),
        # 当Origin不是USA时显示Miles_per_Gallon,否则不显示
        alt.condition(alt.datum.Origin != 'USA', 'Miles_per_Gallon', alt.Undefined())
    ]
)

chart.save('tooltip.html')

这样两种方式都能实现你要的条件式Tooltip效果,你可以根据自己的需求选择~

备注:内容来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:25:28