Vega-Lite v5点标记Tooltip失效,需保留图例交互问题咨询
问题解答
这不是Vega-Lite的bug,问题出在你参数配置的作用范围上。
你把legend_color_0参数放在了线图层内部,虽然全局的opacity编码能引用这个参数,但参数绑定的图例选择交互会干扰其他图层的事件响应,导致点图层的tooltip无法触发。
解决方案
把params配置从线图层移到图表顶层(和layer、encoding同级),这样参数的选择逻辑能正确作用于所有图层,同时不会影响tooltip的正常显示。
修改后的完整配置如下:
{ "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "encoding": { "x": {"field": "col2", "type": "nominal"}, "y": {"field": "col1", "type": "quantitative"}, "color": {"field": "col3"}, "opacity": { "condition": { "test": {"and": [{"param": "legend_color_0"}]}, "value": 1 }, "value": 0.2 } }, "params": [ { "name": "legend_color_0", "select": {"type": "point", "encodings": ["color"], "toggle": "true"}, "bind": "legend" } ], "layer": [ { "mark": {"type": "line", "tooltip": false} }, {"mark": {"type": "point", "tooltip": true, "size": 100, "opacity": 0.5}} ], "data": { "values": [ {"col1": 1, "col2": "a", "col3": "A"}, {"col1": 3, "col2": "b", "col3": "A"}, {"col1": 2, "col2": "c", "col3": "B"}, {"col1": 4, "col2": "d", "col3": "B"} ] }, "height": 250, "width": 350 }
修改说明
将参数定义提升到图表顶层后,图例选择的交互逻辑会全局生效,既保留了你需要的单组选择功能,也不会再干扰点图层的tooltip事件触发,两者可以正常共存。
内容的提问来源于stack exchange,提问作者the21st
相关产品推荐
相关产品推荐

