Vega Lite(Deneb)堆叠条形图X轴重复显示,顶部错误展示底部轴字段
Vega Lite(Deneb)堆叠条形图X轴重复显示,顶部错误展示底部轴字段
你好!我看了你遇到的这个堆叠条形图双X轴的问题——本来想底部轴显示字段b、顶部轴显示字段c,结果顶部莫名也冒出了b的轴,试了各种axis: null都没搞定,确实挺闹心的。
我帮你分析下,这种情况大概率是因为你没明确给两个轴指定专属的显示位置,或者没让两个X轴的刻度独立开来,导致Vega Lite默认把b的轴同时渲染在了上下两端。给你几个具体的解决思路和代码修改方向:
核心修改点
给每个X字段明确指定轴的位置
Vega Lite里X轴的position参数,0代表底部,1代表顶部。你需要给b字段的轴指定position: 0,给c字段的轴指定position: 1,这样它们就只会在你想要的位置显示。让两个X轴的刻度独立
一定要在resolve.scale.x里设置为independent,不然两个轴会共享刻度规则,容易出现重复渲染的问题。检查全局轴配置
看看你有没有在config里给axisX设置过orient: "both"这类属性,这会强制轴在上下都显示,要是有的话得删掉或者用单个轴的配置覆盖它。
修改后的代码示例
{ "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "data": { "values": [ {"b": "B1", "c": "C1", "y": 10}, {"b": "B2", "c": "C2", "y": 20}, {"b": "B3", "c": "C3", "y": 15} ] }, "mark": "bar", "encoding": { "x": { "field": "b", "type": "ordinal", "axis": { "position": 0, "title": "底部轴:b" } }, "x2": { "field": "c", "type": "ordinal", "axis": { "position": 1, "title": "顶部轴:c" } }, "y": { "field": "y", "type": "quantitative" }, "color": {"field": "b", "type": "nominal"} }, "resolve": { "scale": { "x": "independent" } } }
按照这个思路改完,应该就能让b只出现在底部、c只出现在顶部了。如果还是有问题,你可以把你的具体代码片段贴出来,我再帮你精准排查~
备注:内容来源于stack exchange,提问作者mschaefer56
相关产品推荐
相关产品推荐

