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

如何在Apache Superset deck.gl散点图中自定义图例显示统计信息

在Apache Superset的deck.gl散点图图例中添加计数与占比的实现方法

完全可以实现这个需求,核心思路是先预处理数据得到每个分类的计数和占比,再通过自定义deck.gl配置修改图例文本,具体步骤如下:

  • 第一步:预处理数据源
    先通过SQL查询生成包含分类、事件数量、占比的数据集,确保每个分类对应的计数和占比被计算出来。示例SQL如下:

    SELECT 
        category AS category_label,
        COUNT(*) AS event_count,
        ROUND((COUNT(*) * 100.0) / SUM(COUNT(*)) OVER(), 2) AS percentage,
        x, y -- 散点图所需的坐标字段
    FROM your_table
    GROUP BY category, x, y
    

    这里的category是你原来的分类字段(比如Excellent(4,5)),event_count是该分类的事件总数,percentage是占比并保留两位小数。

  • 第二步:自定义deck.gl图层配置
    在Superset创建deck.gl散点图后,进入编辑界面的「Customize」选项卡,找到「Deck.gl JSON Config」区域,修改图例相关配置:
    你可以在图层配置中动态拼接图例标签,将分类名称、计数、占比组合起来。示例配置片段:

    {
      "layer": "ScatterplotLayer",
      "data": "{{ data }}",
      "getPosition": "[x, y]",
      // 按分类设置颜色
      "getColor": "d.category_label === 'Excellent(4,5)' ? [34, 139, 34] : d.category_label === 'Good(3)' ? [255, 215, 0] : [255, 99, 71]",
      "legend": {
        "type": "category",
        "entries": [
          {
            "color": [34, 139, 34],
            "label": "Excellent(4,5) 1406 88.19%"
          },
          {
            "color": [255, 215, 0],
            "label": "Good(3) 168 10.57%"
          },
          {
            "color": [255, 99, 71],
            "label": "Poor(1,2) 21 1.32%"
          }
        ]
      }
    }
    

    如果你希望动态从数据中获取计数和占比(而不是硬编码),可以通过遍历聚合后的分类数据来生成图例条目,这需要你对deck.gl的配置语法有一定了解,利用Superset提供的模板变量{{ data }}来动态提取数据。

  • 替代方案:使用计算字段(需配合聚合)
    若不想修改底层SQL,可在Superset数据集的「计算字段」中创建一个拼接字段,比如:

    CONCAT(category_label, ' ', event_count, ' ', percentage, '%')
    

    但要注意,event_count和percentage必须是聚合后的字段,所以需要确保数据集已经按分类完成聚合。

如果Superset默认的deck.gl组件配置不够灵活,你也可以通过开发自定义可视化插件来进一步扩展图例的显示逻辑,但上述方法足以覆盖大部分场景。

内容的提问来源于stack exchange,提问作者Santosh Kumar Sahoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:17:28