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

Altair图表如何根据数据字段存在性条件化自定义Tooltip内容

Altair条件化Tooltip配置方案

核心问题原因

Altair对数值型字段默认开启缺失值自动补0逻辑,同时默认会隐藏带空值的标记点,所以才会出现魔法卡Tooltip出现不必要0值的问题。

解决步骤

1. 禁止数值字段自动补0

给ATK、DEF对应的坐标轴编码添加impute=None参数,保留原始空值不被填充:

x=alt.X('atk:Q', impute=None, title='攻击力(ATK)'),
y=alt.Y('def:Q', impute=None, title='防御力(DEF)'),

2. 配置条件化Tooltip

给需要按需显示的字段添加合法性判断条件,只有字段值非空时才在Tooltip中展示:

tooltip=[
    alt.Tooltip('name:N', title='卡牌名称'),
    alt.Tooltip('type:N', title='卡牌类型'),
    # ATK仅在值合法时显示
    alt.Tooltip('atk:Q', title='ATK', condition=alt.expr.isValid(alt.datum.atk)),
    # DEF仅在值合法时显示
    alt.Tooltip('def:Q', title='DEF', condition=alt.expr.isValid(alt.datum.def))
]

3. 保留空值标记显示

保持invalid=None配置,确保非怪兽卡等带空值的点不会被过滤:

.configure_mark(
    invalid=None
)

额外注意事项

如果你的原始数据里非怪兽卡的ATK/DEF已经被提前填充为0,需要先做数据清洗:将所有非怪兽卡的ATK、DEF字段值替换为None,才能触发上述条件判断逻辑。

完整示例代码

import altair as alt
import pandas as pd

# df为你的卡牌数据集
alt.Chart(df).mark_point().encode(
    x=alt.X('atk:Q', impute=None, title='攻击力(ATK)'),
    y=alt.Y('def:Q', impute=None, title='防御力(DEF)'),
    color='type:N',
    tooltip=[
        alt.Tooltip('name:N', title='卡牌名称'),
        alt.Tooltip('type:N', title='卡牌类型'),
        alt.Tooltip('atk:Q', title='ATK', condition=alt.expr.isValid(alt.datum.atk)),
        alt.Tooltip('def:Q', title='DEF', condition=alt.expr.isValid(alt.datum.def))
    ]
).configure_mark(
    invalid=None
).interactive()

内容的提问来源于stack exchange,提问作者Marco Aurelio Fernandez Reyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:02