如何在组标记中查找数据转换后的父数据?

时间:2019-07-28 08:11:24

标签: vega

我正在尝试绘制平行坐标并更改每条端到端线的颜色。在这种情况下,不是在每个轴之间都有线,而是从最左到最右。

我想在子标记对象中使用配色方案自动生成颜色。为此,我已使用 transform 父标记属性中设置了字段 color ,但是在下面的字段查找中无法访问转换的结果。似乎 parent transform 之前正在查找数据

{
  "$schema": "https://vega.github.io/schema/vega/v5.json",
  "width": 700,
  "height": 400,
  "padding": 5,
  "autosize": "pad",

  "config": {
    "axisY": {
      "titleX": -2,
      "titleY": 410,
      "titleAngle": 0,
      "titleAlign": "right",
      "titleBaseline": "top"
    }
  },

  "data": [
    {
      "name": "fruits",
      "values": [
        {"name": "apple",  "country": "japan" },
        {"name": "orange", "country": "US" }
      ]

    },
    {
      "name": "fields",
      "values": [
        "name",
        "country"
      ]
    }
  ],
  "scales": [
    {
      "name": "ord", "type": "point",
      "range": "width", "round": true,
      "domain": {"data": "fields", "field": "data"}
    },
    {
      "name": "name", "type": "point",
      "range": "height", "round": true, 
      "domain": {"data": "fruits", "field": "name"}
    },
    {
      "name": "country", "type": "point",
      "range": "height", "round": true, 
      "domain": {"data": "fruits", "field": "country"}
    },
    {
      "name": "color",
      "type": "ordinal",
      "domain": {"data": "fruits", "field": "color"},
      "range": {"scheme": "category20"}
    }

  ],
  "axes": [
    {
      "orient": "left", "zindex": 1,
      "scale": "name", "title": "name",
      "offset": {"scale": "ord", "value": "name", "mult": -1}
    },
    {
      "orient": "left", "zindex": 1,
      "scale": "country", "title": "country",
      "offset": {"scale": "ord", "value": "country", "mult": -1}
    }
  ],
  "marks": [
      {
        "type": "group",
        "from": {
            "data": "fruits"
        },
        "data": [
          {
            "name": "fruits",
            "source": "fruits",
            "transform": [
              {"type": "formula", "as": "color",  "expr": "scale('color', datum.country)"}
            ]
          }
        ],
        "marks": [
          {
            "type": "line",
            "from": {"data": "fields"},
            "encode": {
              "enter": {
                "x": {"scale": "ord", "field": "data"},
                "y": {
                  "scale": {"datum": "data"},
                  "field": {"parent": {"datum": "data"}}
                },
                "stroke": { "field": {"parent": "color" } },
                "strokeWidth": {"value": 1.01},
                "strokeOpacity": {"value": 0.3}
              }
            }
          }  
        ]
      }
  ]
}

我的代码如下。在这种情况下,我想根据 country 字段更改颜色。

textTheme

在创建子标记对象之前如何应用变换?

0 个答案:

没有答案