Grafana面板如何隐藏全空序列的图例及提示并保留筛选功能?
解决Grafana中全空值序列隐藏图例与tooltip并保留同名序列联动的问题
环境信息
- Grafana版本:v9.3.6 (978237e7cb)
- 操作系统:Windows
- 浏览器:Chrome
问题核心
查询数据库返回的每列对应图例项,按name属性分组后图例名称重复;蓝色、黄色、红色对应的序列可能返回全空值,需隐藏这类全空序列的图例和tooltip,同时保留同名图例的联动点击功能(点击任意同名图例,所有该名称的序列同步显示/隐藏)。此前尝试通过字段覆盖设置Series > Hide in area勾选legend,导致图例筛选功能失效。
可行解决方案
方案一:通过Transform从数据层面过滤全空字段
直接移除全空的序列,从根源解决展示问题:
- 添加Add field from calculation转换:
- 命名为
non_null_count,计算方式选择Count non-null values,应用到所有数值字段。
- 命名为
- 添加Filter fields by values转换:
- 选择
non_null_count字段,条件设为Greater than,值填0,过滤掉所有全空的字段。
- 选择
- 添加Organize fields转换:
- 将
non_null_count字段隐藏(选择移除或设置为隐藏),避免影响图表展示。
- 将
- 优势:操作简单,直接清除全空序列,图例联动点击功能不受影响,因为保留的同名序列依然按
name分组联动。
方案二:结合字段标签与Panel Overrides精准隐藏全空序列
保留字段但仅隐藏全空序列的展示,同时不破坏图例联动:
- 添加Add field from calculation转换:
- 命名为
non_null_count,计算方式选Count non-null values,应用到所有数值字段。
- 命名为
- 再添加一个Add field from calculation转换:
- 命名为
is_empty,计算方式选Math,公式填写$non_null_count == 0 ? 1 : 0,标记全空字段。
- 命名为
- 通过Configure fields转换,给每个字段添加标签
is_empty,值对应该字段的is_empty计算结果。 - 进入Panel Overrides设置:
- 添加新规则,选择Field with label,设置
is_empty等于1。 - 给该规则添加两个配置:
Series > Hide in legend和Series > Hide in tooltip,均设为开启。
- 添加新规则,选择Field with label,设置
- 优势:保留全空字段的后台数据,仅前端隐藏展示,图例联动功能正常,点击同名图例仍能控制所有该名称的序列。
方案三:调整数据库查询逻辑,从源头过滤全空序列
如果数据库支持复杂查询,直接在查询阶段排除全空序列:
以SQL为例,添加子查询判断序列是否存在非空值:
SELECT name, color, value FROM your_table WHERE EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.name = your_table.name AND t2.color = your_table.color AND t2.value IS NOT NULL )
- 优势:减少数据传输量,性能最优,图表无需额外配置即可满足需求,图例联动功能自然保留。
内容的提问来源于stack exchange,提问作者Nadine Schneider
相关产品推荐
相关产品推荐

