如何在Vega-Lite表格可视化中添加每行总计列?
在Vega-Lite表格中添加每行总计列
要实现每行显示总计的表格,需先计算每行数值总和,再调整数据格式适配表格展示,具体操作如下:
- 计算每行总计:通过
transform的calculate方法,将每行所有数值列相加,生成名为"总计"的新字段。 - 转换数据格式:用
fold将宽表转为长表,把新增的"总计"列包含在内,方便表格按列展示所有字段。 - 配置表格展示:将
mark设为table,通过encoding配置行、列和文本内容,实现示例中的表格效果。
修改后的完整代码如下:
{ "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "data": { "values": [ {"Category": "A", "1990": 10, "2000": 20, "2010": 30, "2020": 40}, {"Category": "B", "1990": 15, "2000": 25, "2010": 35, "2020": 45}, {"Category": "C", "1990": 5, "2000": 15, "2010": 25, "2020": 35} ] }, "transform": [ {"calculate": "datum['1990'] + datum['2000'] + datum['2010'] + datum['2020']", "as": "总计"}, {"fold": ["1990", "2000", "2010", "2020", "总计"], "as": ["年份/总计", "数值"]} ], "mark": "table", "encoding": { "row": {"field": "Category", "type": "nominal", "title": "类别"}, "column": {"field": "年份/总计", "type": "nominal"}, "text": {"field": "数值", "type": "quantitative"} }, "config": { "table": { "header": {"labelFontSize": 12, "titleFontSize": 14}, "cell": {"labelFontSize": 12} } } }
关键说明
calculate语句中,datum['列名']用于引用每行对应列的数值,可根据实际列名调整相加的字段。fold转换时,必须将"总计"列加入折叠字段列表,才能让它作为表格的一列显示。- 通过
row和column编码实现行列布局,text编码用于显示单元格的数值内容。
内容的提问来源于stack exchange,提问作者Tyvain
相关产品推荐
相关产品推荐

