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

Altair<5:实现Hover时仅显示关联字段而非全部字段

解决Altair<5中Hover提示框仅显示当前厨师信息的问题

问题分析

当前代码通过melt处理数据时保留了cook1和cook2两个字段,导致hover提示框会同时展示两位厨师的菜品信息。要实现仅显示当前hover点对应厨师的信息,需要调整数据结构,让每行数据仅关联单个厨师的信息。

解决方案

重新构造长格式数据集,将两位厨师的数据拆分后分别处理,再合并为每行仅包含单个厨师信息的结构,这样提示框就能精准展示当前hover对象的内容。

修改后的完整代码:

import altair as alt
import pandas as pd

alt.renderers.enable("altair_viewer")
df = pd.DataFrame({
    "ingredient1": ["potato", "onion", "carrot", "beet"],
    "ingredient2": ["tomato", "pepper", "zucchini", "lettuce"],
    "dish": [1, 2, 3, 4],
    "cook1": ["cook1 dish1", "cook1 dish2", "cook1 dish3", "cook1 dish4"],
    "cook1_score": [0.4, 0.3, 0.7, 0.9],
    "cook2": ["cook2 dish1", "cook2 dish2", "cook2 dish3", "cook2 dish4"],
    "cook2_score": [0.6, 0.2, 0.5, 0.6],
})

# 拆分并重构数据,每行仅保留单个厨师的信息
df_cook1 = df[["dish", "ingredient1", "ingredient2", "cook1", "cook1_score"]].rename(
    columns={"cook1": "cook_info", "cook1_score": "score"}
)
df_cook1["cook"] = "cook1"

df_cook2 = df[["dish", "ingredient1", "ingredient2", "cook2", "cook2_score"]].rename(
    columns={"cook2": "cook_info", "cook2_score": "score"}
)
df_cook2["cook"] = "cook2"

df_melt = pd.concat([df_cook1, df_cook2], ignore_index=True)

nearest_dish = alt.selection(type="single", nearest=True, on="mouseover", fields=["dish"], empty="none")

# 主图表:提示框仅包含当前厨师的信息
chart = alt.Chart(df_melt).mark_circle().encode(
    x="dish:O",
    y="score:Q",
    color="cook:N",
    tooltip=["dish", "ingredient1", "ingredient2", "cook", "cook_info", "score"]
).add_selection(
    nearest_dish
)

# 垂直线部分保持不变
vertical_line = alt.Chart(df_melt).mark_rule(color="gray").encode(
    x="dish:O",
).transform_filter(
    nearest_dish
)

layer = alt.layer(
    chart, vertical_line
).properties(
    width=600, height=300
).interactive()

layer.show()

关键修改点

  1. 数据结构调整:将原数据集拆分为cook1和cook2两个子数据集,分别重命名字段后合并,确保每行仅对应一位厨师的菜品和分数信息。
  2. 提示框字段优化:tooltip仅包含当前行的cook(厨师名称)、cook_info(当前厨师的菜品描述)及score(分数),避免冗余信息。

内容的提问来源于stack exchange,提问作者Bram Vanroy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:12:38