Power BI Deneb Vega-Lite条件X轴短月份标签设置问题
解决Power BI Deneb Vega-Lite中时间轴刻度与标签错位问题
你的问题出在labelExpr的判断逻辑错误:默认时间轴的刻度是从月初生成的(比如2024-04-01),datum.value对应的是刻度的时间值,其日期是1而非15,所以day(datum.value) === 15的条件永远不成立,导致标签无法显示。
要实现「刻度线保留在月初、标签显示在月中并标注月份」的效果,不需要判断日期,直接调整标签的位置和格式化文本即可:
- 保留x轴的自动时间刻度(默认按月份生成,起始于月初)
- 用
labelExpr直接格式化刻度为月份缩写 - 通过
labelX将标签从刻度位置(月初)偏移15天,定位到月中
修改后的完整代码如下:
{"$schema": "https://vega.github.io/schema/vega-lite/v5.json", "data": {"values": [ {"date": "2024-04-15T00:00:00Z", "value": 10}, {"date": "2024-05-15T00:00:00Z", "value": 20}, {"date": "2024-06-15T00:00:00Z", "value": 15}, {"date": "2024-07-15T00:00:00Z", "value": 18}, {"date": "2024-08-15T00:00:00Z", "value": 25}, {"date": "2024-09-15T00:00:00Z", "value": 22}, {"date": "2024-10-15T00:00:00Z", "value": 19}, {"date": "2024-11-15T00:00:00Z", "value": 16}, {"date": "2024-12-15T00:00:00Z", "value": 23}, {"date": "2025-01-15T00:00:00Z", "value": 28}, {"date": "2025-02-15T00:00:00Z", "value": 30}, {"date": "2025-03-15T00:00:00Z", "value": 25} ]}, "width": "container", "height": "container", "mark": "line", "encoding": { "x": { "field": "date", "type": "temporal", "title": "日期", "axis": { "labelExpr": "timeFormat(datum.value, '%b')", "labelX": 15 * 24 * 60 * 60 * 1000, // 将标签从月初偏移15天到月中 "labelAlign": "center" } }, "y": { "field": "value", "type": "quantitative", "title": "数值" } } }
如果需要显示完整的「月份+年份」格式,只需把labelExpr改成timeFormat(datum.value, '%b %Y')即可。
内容的提问来源于stack exchange,提问作者Jflo3500
相关产品推荐
相关产品推荐

