如何移除Vega-lite分组条形图中不属于对应组的无数据空白占位
问题原因
你遇到的空白占位是因为Vega-Lite分面默认共享全局轴值域,每个Size分组下的X轴默认使用全量学校名称作为取值范围,因此会给不属于当前分组的学校预留空白位置。
解决方法(适配Vega-Lite v5版本)
只需要新增分面X轴独立取值的配置即可,修改点如下:
- 在规范顶层添加
resolve配置,指定X轴的比例尺独立计算值域,不全局共享 - 可选:在X轴编码中显式声明
Name为名义类型,避免自动类型推断出现偏差
修改后的完整代码:
var barGroupCreate = { $schema: "https://vega.github.io/schema/vega-lite/v5.json", data: { values: toolData }, config: { view: { stroke: "transparent" }, axis: { domainWidth: 1 } }, spacing: { column: 10 }, // 新增resolve配置,指定X轴比例尺独立 resolve: { scale: { x: "independent" } }, facet: { column: { field: "Size", type: "nominal", header: { orient: "bottom" }, }, }, spec: { width: { step: 12 }, mark: "bar", encoding: { y: { aggregate: "sum", field: "Contact Hours (Total)", title: "Contact Hours", axis: { grid: false }, }, x: { field: "Name", type: "nominal", // 显式声明为名义类型 axis: null }, color: { field: "Size", scale: { range: [ "#002D74", "#F26852", "#2A7DE1", "#FFD100", "#00A9C5", "#3A4A9F", ], }, }, }, }, };
修改后每个Size分组下只会展示当前分组所属的学校,不会再出现空白占位,每个分组的宽度也会根据当前分组的学校数量自动适配。
内容的提问来源于stack exchange,提问作者RichmondMJ
相关产品推荐
相关产品推荐

