首页 > 解决方案 > VegaLite - 根据值自定义标签轴

问题描述

我正在尝试使用 VegaLite 绘制树状图。情节几乎完成了,但只有一件事混合在一起,即与点 id 对应的轴标签。在我绘制的图中,轴从 1 到 40 排序。我有一个带有相应标签的字典,例如,如果值为 1,则标签为“point10”,如果值为 30,则标签为“point5”,依此类推. 因此,我想做的是替换标签的数字。

是否可以在 VegaLite 中做到这一点?我还没有通过阅读文档找到方法。

在此处输入图像描述

标签: plotlabelaxisvega-lite

解决方案


您可以只提供pointLabelsx 轴中的字段,然后提供带有字段的排序value,这样您就可以将 pointLabels 视为标签,并且将根据您的值显示排序。请参阅下面的Name字段排序示例或检查编辑器

{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "description": "Drag a rectangular brush to show (first 20) selected points in a table.",
  "data": {"url": "data/cars.json"},
  "transform": [
    {"window": [{"op": "row_number", "as": "row_number"}]},
    {"calculate": "'My'+datum.Name", "as": "alias"}
  ],
  "params": [{"name": "brush", "select": "interval"}],
  "mark": "bar",
  "encoding": {
    "x": {
      "field": "Name",
      "type": "nominal",
      "stack": false,
      "sort": {"field": "row_number", "order": "ascending"}
    },
    "y": {"field": "Miles_per_Gallon", "stack": false, "type": "quantitative"},
    "color": {
      "condition": {"param": "brush", "field": "Cylinders", "type": "ordinal"},
      "value": "grey"
    }
  }
}

推荐阅读