Vega Lite独立秤,具有多层和多面性

时间:2018-12-14 21:42:45

标签: vega vega-lite

是否可以对每个方面和每个图层使用独立的比例尺?当您有一个构面或一个额外的图层时,解析效果会很好用,但我想知道这是否有可能做到。

我想要的是: The two scales on each side

the faceting here

1 个答案:

答案 0 :(得分:0)

在Vega-Lite中表达的方式是在构面内使用已设置解析的图层。像这样:

{
  "data": {
    "url": "https://vega.github.io/vega-datasets/data/seattle-weather.csv"
  },
  "facet": {
    "column": {
      "field": "weather",
      "type": "nominal"
    }
  },
  "spec": {
    "layer": [
      {
        "encoding": {
          "x": {
            "field": "date",
            "timeUnit": "month",
            "type": "temporal"
          },
          "y": {
            "aggregate": "mean",
            "field": "temp_max",
            "type": "quantitative"
          }
        },
        "mark": {
          "color": "salmon",
          "type": "line"
        }
      },
      {
        "encoding": {
          "x": {
            "field": "date",
            "timeUnit": "month",
            "type": "temporal"
          },
          "y": {
            "aggregate": "mean",
            "field": "precipitation",
            "type": "quantitative"
          }
        },
        "mark": {
          "color": "steelblue",
          "type": "line"
        }
      }
    ],
    "resolve": {
      "scale": {
        "y": "independent"
      }
    }
  }
}

尽管根据Vega-Lite架构该规范有效,但遗憾的是,在vega-lite渲染器中存在bug,使其无法呈现此规范。

作为一种解决方法,您可以使用过滤器转换手动连接两个分层的图表,该转换为每个图表选择所需的数据子集。例如:

{
  "data": {
    "url": "https://vega.github.io/vega-datasets/data/seattle-weather.csv"
  },
  "hconcat": [
    {
      "layer": [
        {
          "mark": {"type": "line", "color": "salmon"},
          "encoding": {
            "x": {"type": "temporal", "field": "date", "timeUnit": "month"},
            "y": {
              "type": "quantitative",
              "aggregate": "mean",
              "field": "temp_max"
            }
          }
        },
        {
          "mark": {"type": "line", "color": "steelblue"},
          "encoding": {
            "x": {"type": "temporal", "field": "date", "timeUnit": "month"},
            "y": {
              "type": "quantitative",
              "aggregate": "mean",
              "field": "precipitation"
            }
          }
        }
      ],
      "resolve": {"scale": {"y": "independent", "x": "shared"}},
      "transform": [{"filter": "(datum.weather === 'sun')"}]
    },
    {
      "layer": [
        {
          "mark": {"type": "line", "color": "salmon"},
          "encoding": {
            "x": {"type": "temporal", "field": "date", "timeUnit": "month"},
            "y": {
              "type": "quantitative",
              "aggregate": "mean",
              "field": "temp_max"
            }
          }
        },
        {
          "mark": {"type": "line", "color": "steelblue"},
          "encoding": {
            "x": {"type": "temporal", "field": "date", "timeUnit": "month"},
            "y": {
              "type": "quantitative",
              "aggregate": "mean",
              "field": "precipitation"
            }
          }
        }
      ],
      "resolve": {"scale": {"y": "independent", "x": "shared"}},
      "transform": [{"filter": "(datum.weather === 'fog')"}]
    }
  ],
  "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json"
}

enter image description here