添加常量竖线时的像素偏差问题:实为代码错误及修正方案
问题:无坐标轴条形图中Rule竖线的像素偏差修复方案
问题描述
我创建无坐标轴的条形图,仅通过rule标记添加一条常量竖线时,出现了对齐方面的像素偏差问题,能否修复?
我已用Snagit箭头标注出该“像素偏差”,附图显示竖线与条形图的基准位置存在错位。
更新说明
参考Davide的评论,此现象并非故障,而是代码问题。将竖线的x值设为0而非100后,即可正常显示。
原始配置代码
{ "width": 200, "height": 200, "params": [ {"name": "colGood", "value": "#1b9e77"}, {"name": "colBad", "value": "#7570b3"} ], "data": {"name": "thedata", "values": [ {"region": "Europe" , "Act": 11000, "PY": 9000, "Plan": 10000}, {"region": "Asia" , "Act": 17000, "PY": 16000, "Plan": 18000}, {"region": "Americas" , "Act": 19000, "PY": 14000, "Plan": 12000}, {"region": "Australia" , "Act": 13000, "PY": 14000, "Plan": 12000} ] }, "transform": [ {"calculate": "datum['Act'] - datum['Plan']" , "as": "deltaAct_Plan"}, {"calculate": "datum['deltaAct_Plan'] >= 0 ? datum['Act'] - datum['deltaAct_Plan'] : datum['Act']" , "as": "deltaAct_Plan_Start"}, {"calculate": "datum['deltaAct_Plan'] > 0 ? datum['Act'] : datum['Plan']" , "as": "deltaAct_Plan_End"}, {"calculate": "(datum['Act'] / datum['Plan']) - 1" , "as": "deltaAct_Plan_Perc"} ], "layer": [ { "mark": { "type": "bar", "height": {"band": 0.8} }, "encoding": { "y": {"field": "region", "type": "nominal", "axis": { "title": null, "labels": false, "domain": false, "ticks": false, "grid": false } }, "x": {"field": "deltaAct_Plan", "type": "quantitative", "axis": { "title": null , "domain": false, "grid": false} }, "color": {"value": {"expr": "datum['deltaAct_Plan'] < 0 ? colBad : colGood"}} } }, { "description": "the horzontal line called y-axis", "mark": { "type": "rule", "color": "darkgrey", "size": 1 }, "encoding": {"x": {"datum": 100}} } ] }
修复方案
找到配置中layer数组里的rule标记部分,将"encoding": {"x": {"datum": 100}}修改为"encoding": {"x": {"datum": 0}},即可让竖线与条形图基准位置对齐,解决像素偏差问题。
内容的提问来源于stack exchange,提问作者Tom Martens
相关产品推荐
相关产品推荐

