Milestone-like Vega Lite 中的规则标记

Milestone-like Rule marks in Vega Lite

我想在我的图表中放置里程碑占位符,类似于图片中黄色箭头所指示的:

image source

这是否可以在 Vega Lite 中实现(X 轴是时间轴)?我检查了 Rule 标记和 Text 标记它的属性,但不知道如何使用它们来创建里程碑。

您可以使用 ruletext 标记的分层来做到这一点。这是一个简短的例子 (view in editor):

{
  "datasets": {
    "line-data": [
      {"x": "2020-01-31", "y": 0.9},
      {"x": "2020-02-29", "y": 0.9},
      {"x": "2020-03-31", "y": 2.0},
      {"x": "2020-04-30", "y": 2.9},
      {"x": "2020-05-31", "y": 3.7},
      {"x": "2020-06-30", "y": 4.4},
      {"x": "2020-07-31", "y": 4.8},
      {"x": "2020-08-31", "y": 6.0},
      {"x": "2020-09-30", "y": 6.6}
    ],
    "rule-data": [
      {"x": "2020-04-01", "y": 5, "labels": "event 1"},
      {"x": "2020-06-01", "y": 6, "labels": "event 2"},
      {"x": "2020-07-01", "y": 8, "labels": "event 3"}
    ]
  },
  "encoding": {
    "x": {"type": "temporal", "field": "x"},
    "y": {"type": "quantitative", "field": "y", "scale": {"domain": [0, 10]}},
    "text": {"type": "nominal", "field": "labels"}
  },
  "layer": [
    {"data": {"name": "line-data"}, "mark": "line"},
    {
      "data": {"name": "rule-data"},
      "mark": {"type": "rule", "strokeDash": [2, 2]}
    },
    {
      "data": {"name": "rule-data"},
      "mark": {"type": "text", "align": "right", "dy": -5}
    }
  ],
  "width": 600
}