packages feed

hvega 0.11.0.0 → 0.11.0.1

raw patch · 628 files changed

+15283/−15235 lines, 628 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

This diff is very large; some files are shown as “too large to diff”. Download the raw patch for the complete diff.

Files

CHANGELOG.md view
@@ -1,6 +1,11 @@ For the latest version of this document, please see [https://github.com/DougBurke/hvega/blob/master/hvega/CHANGELOG.md](https://github.com/DougBurke/hvega/blob/master/hvega/CHANGELOG.md). +## 0.11.0.1++There is no change in the code, only the tests, which should now+pass when using hashable 0.3.1.0.+ ## 0.11.0.0  The Vega-Lite tests are now validated against version 4.15 of the
README.md view
@@ -1,6 +1,7 @@ # hvega  [![vega-lite version](https://img.shields.io/badge/Vega--Lite-v4.15-purple.svg)](https://vega.github.io/vega-lite/)+[![GitHub CI](https://github.com/DougBurke/hvega/workflows/hvega-CI/badge.svg)](https://github.com/DougBurke/hvega/actions)  Create [Vega-Lite](https://vega.github.io/vega-lite/) visualizations in Haskell. It targets version 4.15 of the Vega-Lite specification. Note that
default.nix view
@@ -1,2 +1,48 @@-{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc884" }:-nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./hvega.nix { }+# Looks like release-20.03 doesn't have haskell-language-server so stick+# with nixpkgs-unstable+{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc8104" }:++let+  # sources = import ../nix/sources.nix;+  # pkgs = import sources.nixpkgs {};++  inherit (nixpkgs) pkgs;++  # since we are in a sub-directory+  # gitignore = pkgs.nix-gitignore.gitignoreSourcePure [ ./.gitignore ];+  gitignore = pkgs.nix-gitignore.gitignoreSourcePure [ ../.gitignore ];++  myHaskellPackages = pkgs.haskell.packages.${compiler}.override {+    overrides = hself: hsuper: {+      "hvega" =+        hself.callCabal2nix "hvega" (gitignore ./.) {};+    };+  };++  shell = myHaskellPackages.shellFor {+    packages = p: [+      p."hvega"+    ];+    buildInputs = [+      pkgs.haskellPackages.cabal-install+      pkgs.haskellPackages.haskell-language-server+      pkgs.haskellPackages.hlint+      pkgs.niv+    ];+    withHoogle = true;+  };++  # exe = pkgs.haskell.lib.justStaticExecutables (myHaskellPackages."{{cookiecutter.project_name}}");++  # docker = pkgs.dockerTools.buildImage {+  #   name = "{{cookiecutter.project_name}}";+  #   config.Cmd = [ "${exe}/bin/{{cookiecutter.project_name}}" ];+  # };+in+{+  inherit shell;+  # inherit exe;+  # inherit docker;+  inherit myHaskellPackages;+  "hvega" = myHaskellPackages."hvega";+}
hvega.cabal view
@@ -1,5 +1,5 @@ name:                hvega-version:             0.11.0.0+version:             0.11.0.1 synopsis:            Create Vega-Lite visualizations (version 4) in Haskell. description:         This is based on the elm-vegalite package                      (<http://package.elm-lang.org/packages/gicentre/elm-vegalite/latest>)@@ -10,7 +10,7 @@ license-file:        LICENSE author:              Douglas Burke maintainer:          dburke.gw@gmail.com-copyright:           2018-2020 Douglas Burke+copyright:           2018-2021 Douglas Burke category:            Graphics build-type:          Simple extra-source-files:  README.md@@ -18,7 +18,6 @@                      stack.yaml                      default.nix                      shell.nix-                     hvega.nix                      tests/specs/axis/*.vl                      tests/specs/color/*.vl                      tests/specs/composite/*.vl
− hvega.nix
@@ -1,24 +0,0 @@-{ mkDerivation, aeson, aeson-pretty, base, bytestring, containers-, directory, filepath, http-conduit, stdenv, tagsoup, tasty-, tasty-golden, text, unordered-containers-}:-mkDerivation {-  pname = "hvega";-  version = "0.11.0.0";-  src = ./.;-  configureFlags = [ "-ftools" ];-  isLibrary = true;-  isExecutable = true;-  libraryHaskellDepends = [ aeson base text unordered-containers ];-  executableHaskellDepends = [-    aeson aeson-pretty base bytestring directory filepath http-conduit-    tagsoup text-  ];-  testHaskellDepends = [-    aeson aeson-pretty base bytestring containers filepath tasty-    tasty-golden text unordered-containers-  ];-  homepage = "https://github.com/DougBurke/hvega";-  description = "Create Vega-Lite visualizations (version 4) in Haskell";-  license = stdenv.lib.licenses.bsd3;-}
shell.nix view
@@ -1,2 +1,2 @@-{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc884" }:-(import ./default.nix { inherit nixpkgs compiler; }).env+{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc8104" }:+(import ./default.nix { inherit nixpkgs compiler; }).shell
src/Graphics/Vega/Tutorials/VegaLite.hs view
@@ -495,7 +495,7 @@ this case we use the function 'position' to provide an encoding of the @\"plx\"@ field as the x-position in our plot. The precise way in which the data value (parallax) is mapped to the x-position will depend on the type of-data we are encoding. We can provide a hint by delcaring the+data we are encoding. We can provide a hint by declaring the measurement type of the data field, here 'Quantitative' indicating a numeric measurement type. The final parameter of position is a list of any additional encodings in our specification. Here, with only one@@ -642,7 +642,7 @@ 'dataFromRows' - or directly from JSON (as a 'Data.Aeson.Value') using 'dataFromJson'. -Examples showing 'dataFromColumns' are the 'pieChart' and'skyPlotWithGraticules' plots,+Examples showing 'dataFromColumns' are the 'pieChart' and 'skyPlotWithGraticules' plots, but let's not peak ahead!  -}@@ -790,7 +790,7 @@  -- $pie-chart -- Before adding a second axis, let's temporarily look at another--- \"one dimensiona" chart, namel the humble pie chart.+-- \"one dimensiona" chart, namely the humble pie chart. -- The 'Arc' mark type allows you to create pie charts, as well as more -- complex visualizations which we won't discuss further in this -- tutorial.
src/Graphics/Vega/VegaLite.hs view
@@ -1,6 +1,6 @@ {-| Module      : Graphics.Vega.VegaLite-Copyright   : (c) Douglas Burke, 2018-2020+Copyright   : (c) Douglas Burke, 2018-2021 License     : BSD3  Maintainer  : dburke.gw@gmail.com@@ -859,6 +859,7 @@           -- ** Version 0.11          --+         -- $update01101          -- $update01100           -- ** Version 0.10@@ -1266,6 +1267,11 @@ -- $update -- The following section describes how to update code that used -- an older version of @hvega@.++-- $update01101+-- The @0.11.0.1@ release is purely to support testing with @hashable@ 0.3.1.0.+-- There are no changes to the module.+--  -- $update01100 -- The @0.11.0.0@ release updates @hvega@ to support version 4.15 of
stack.yaml view
@@ -5,4 +5,4 @@  extra-deps: [] -resolver: lts-15.5+resolver: lts-17.2
tests/Test.hs view
@@ -25,7 +25,8 @@  import qualified Data.ByteString.Lazy.Char8 as BL8 -import Data.Aeson.Encode.Pretty (encodePretty)+import Data.Aeson (Value)+import Data.Aeson.Encode.Pretty (Config(confCompare), encodePretty', defConfig)  import System.FilePath ((</>), (<.>)) @@ -84,6 +85,20 @@ import qualified Gallery.Repeat as GR import qualified Gallery.Scatter as GS import qualified Gallery.Table as GTBL+++-- Ensure we have a repeatable ordering for the output.+-- Hopefully this is repeatable enough (brought on by+-- changes in hashable 0.3.1.0 but it makes sense to+-- do this here as I hadn't realised that the default+-- encodePretty didn't actually apply any sorting to+-- the keys).+--+encodePretty :: Value -> BL8.ByteString+encodePretty = encodePretty' config+  where+    config = defConfig { confCompare = compare }+  -- The "golden" output is "tests/specs/<label>/<name>.vl" -- where label can now itself contain sub-directories, so should
tests/specs/axis/axis1.vl view
@@ -1,513 +1,509 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -517,5 +513,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis1c.vl view
@@ -1,541 +1,537 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -545,5 +541,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis2.vl view
@@ -1,513 +1,509 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "catX",@@ -517,5 +513,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis2c.vl view
@@ -1,541 +1,537 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "catX",@@ -545,5 +541,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis3.vl view
@@ -1,513 +1,509 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "date",@@ -517,5 +513,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis3c.vl view
@@ -1,541 +1,537 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "date",@@ -545,5 +541,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis4.vl view
@@ -1,517 +1,511 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "values": [                     1,@@ -519,11 +513,17 @@                     39,                     90                 ]-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis4c.vl view
@@ -1,545 +1,539 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "values": [                     1,@@ -547,11 +541,17 @@                     39,                     90                 ]-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis5.vl view
@@ -1,517 +1,511 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "catX",-            "type": "ordinal",             "axis": {                 "values": [                     "1",@@ -520,11 +514,17 @@                     "dummy",                     "90"                 ]-            }+            },+            "field": "catX",+            "type": "ordinal"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis5c.vl view
@@ -1,545 +1,539 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "catX",-            "type": "ordinal",             "axis": {                 "values": [                     "1",@@ -548,11 +542,17 @@                     "dummy",                     "90"                 ]-            }+            },+            "field": "catX",+            "type": "ordinal"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis6.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -55,34 +52,37 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "values": [                     {                         "date": 4,-                        "year": 2019,-                        "month": "Jan"+                        "month": "Jan",+                        "year": 2019                     },                     {                         "date": 8,-                        "year": 2019,-                        "month": "Jan"+                        "month": "Jan",+                        "year": 2019                     },                     {                         "date": 20,-                        "year": 2019,-                        "month": "Jan"+                        "month": "Jan",+                        "year": 2019                     }                 ]-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis6c.vl view
@@ -1,36 +1,33 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {@@ -83,34 +80,37 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "values": [                     {                         "date": 4,-                        "year": 2019,-                        "month": "Jan"+                        "month": "Jan",+                        "year": 2019                     },                     {                         "date": 8,-                        "year": 2019,-                        "month": "Jan"+                        "month": "Jan",+                        "year": 2019                     },                     {                         "date": 20,-                        "year": 2019,-                        "month": "Jan"+                        "month": "Jan",+                        "year": 2019                     }                 ]-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis7.vl view
@@ -1,524 +1,524 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "labelExpr": "datum.value / 100"-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis7c.vl view
@@ -1,552 +1,552 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "labelExpr": "datum.value / 100"-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis8.vl view
@@ -1,524 +1,524 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "catX",-            "type": "ordinal",             "axis": {                 "labelExpr": "'number' + datum.label"-            }+            },+            "field": "catX",+            "type": "ordinal"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axis8c.vl view
@@ -1,552 +1,552 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisQuantitative": {+            "domainColor": "orange",+            "gridColor": "seagreen",+            "labelFont": "Comic Sans MS",+            "labelOffset": 10,+            "tickOffset": 10+        },         "axisTemporal": {             "domainColor": "brown",-            "labelColor": "purple",-            "grid": false,             "domainDash": [                 4,                 2-            ]-        },-        "axisQuantitative": {-            "domainColor": "orange",-            "tickOffset": 10,-            "labelOffset": 10,-            "gridColor": "seagreen",-            "labelFont": "Comic Sans MS"+            ],+            "grid": false,+            "labelColor": "purple"         },         "line": {-            "strokeWidth": 2,-            "stroke": "gray"+            "stroke": "gray",+            "strokeWidth": 2         },         "point": {-            "strokeWidth": 1,-            "stroke": "black",             "fill": "yellow",-            "strokeOpacity": 0.4+            "stroke": "black",+            "strokeOpacity": 0.4,+            "strokeWidth": 1         }     },-    "mark": {-        "point": true,-        "type": "line"-    },     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "catX",-            "type": "ordinal",             "axis": {                 "labelExpr": "'number' + datum.label"-            }+            },+            "field": "catX",+            "type": "ordinal"         },         "y": {             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/axisOverlapGreedy.vl view
@@ -1,5 +1,5 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -24,23 +24,23 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {-                "labelOverlap": "greedy",-                "labelFontSize": 20-            }+                "labelFontSize": 20,+                "labelOverlap": "greedy"+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {-                "labelOverlap": "greedy",-                "labelFontSize": 20-            }+                "labelFontSize": 20,+                "labelOverlap": "greedy"+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "mark": "circle" }
tests/specs/axis/axisOverlapNone.vl view
@@ -1,5 +1,5 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -24,23 +24,23 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {-                "labelOverlap": false,-                "labelFontSize": 20-            }+                "labelFontSize": 20,+                "labelOverlap": false+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {-                "labelOverlap": false,-                "labelFontSize": 20-            }+                "labelFontSize": 20,+                "labelOverlap": false+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "mark": "circle" }
tests/specs/axis/axisOverlapParity.vl view
@@ -1,5 +1,5 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -24,23 +24,23 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {-                "labelOverlap": true,-                "labelFontSize": 20-            }+                "labelFontSize": 20,+                "labelOverlap": true+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {-                "labelOverlap": true,-                "labelFontSize": 20-            }+                "labelFontSize": 20,+                "labelOverlap": true+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "mark": "circle" }
tests/specs/axis/axisstyleempty.vl view
@@ -1,17 +1,16 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {}     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {             "field": "Horsepower",@@ -21,5 +20,6 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/axisstyleemptyx.vl view
@@ -1,30 +1,30 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {             "x-style": {}         }     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {-            "field": "Horsepower",-            "type": "quantitative",             "axis": {                 "style": "x-style"-            }+            },+            "field": "Horsepower",+            "type": "quantitative"         },         "y": {             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/axisstylex.vl view
@@ -1,34 +1,34 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {             "x-style": {                 "domainColor": "orange",-                "labelExpr": "if (datum.value <= 100, 'low:' + datum.label, 'high:' + datum.label)",-                "gridColor": "lightgreen"+                "gridColor": "lightgreen",+                "labelExpr": "if (datum.value <= 100, 'low:' + datum.label, 'high:' + datum.label)"             }         }     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {-            "field": "Horsepower",-            "type": "quantitative",             "axis": {                 "style": "x-style"-            }+            },+            "field": "Horsepower",+            "type": "quantitative"         },         "y": {             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/axisstylexastyle.vl view
@@ -1,26 +1,25 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisX": {+            "style": "x-style"+        },         "style": {             "x-style": {                 "domainColor": "orange",-                "labelExpr": "if (datum.value <= 100, 'low:' + datum.label, 'high:' + datum.label)",-                "gridColor": "lightgreen"+                "gridColor": "lightgreen",+                "labelExpr": "if (datum.value <= 100, 'low:' + datum.label, 'high:' + datum.label)"             }-        },-        "axisX": {-            "style": "x-style"         }     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {             "field": "Horsepower",@@ -30,5 +29,6 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/axisstylexy.vl view
@@ -1,44 +1,44 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {             "x-style": {                 "domainColor": "orange",-                "labelExpr": "if (datum.value <= 100, 'low:' + datum.label, 'high:' + datum.label)",-                "gridColor": "lightgreen"+                "gridColor": "lightgreen",+                "labelExpr": "if (datum.value <= 100, 'low:' + datum.label, 'high:' + datum.label)"             },             "y-style": {                 "domain": false,-                "labels": false,                 "grid": false,-                "title": null,-                "ticks": false+                "labels": false,+                "ticks": false,+                "title": null             }         }     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {-            "field": "Horsepower",-            "type": "quantitative",             "axis": {                 "style": "x-style"-            }+            },+            "field": "Horsepower",+            "type": "quantitative"         },         "y": {-            "field": "Miles_per_Gallon",-            "type": "quantitative",             "axis": {                 "style": "y-style"-            }+            },+            "field": "Miles_per_Gallon",+            "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/multiline.vl view
@@ -1,37 +1,37 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "axis": {             "labelLineHeight": 20         },         "lineBreak": " "     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {-            "field": "Horsepower",-            "type": "quantitative",             "axis": {                 "labelExpr": "datum.label + ' horses'",-                "labelLineHeight": 22,-                "labelFontSize": 11-            }+                "labelFontSize": 11,+                "labelLineHeight": 22+            },+            "field": "Horsepower",+            "type": "quantitative"         },         "y": {-            "field": "Miles_per_Gallon",-            "type": "quantitative",             "axis": {                 "labelExpr": "datum.label+' mpg'",                 "labelFontSize": 22-            }+            },+            "field": "Miles_per_Gallon",+            "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/responsiveHeight.vl view
@@ -1,514 +1,509 @@ {-    "height": "container",-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -518,5 +513,10 @@             "field": "y",             "type": "quantitative"         }+    },+    "height": "container",+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/axis/responsiveWidth.vl view
@@ -1,514 +1,509 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "x": 1,                 "catX": "1",+                "x": 1,                 "y": 1             },             {-                "x": 2,                 "catX": "2",+                "x": 2,                 "y": 2             },             {-                "x": 3,                 "catX": "3",+                "x": 3,                 "y": 3             },             {-                "x": 4,                 "catX": "4",+                "x": 4,                 "y": 4             },             {-                "x": 5,                 "catX": "5",+                "x": 5,                 "y": 5             },             {-                "x": 6,                 "catX": "6",+                "x": 6,                 "y": 6             },             {-                "x": 7,                 "catX": "7",+                "x": 7,                 "y": 7             },             {-                "x": 8,                 "catX": "8",+                "x": 8,                 "y": 8             },             {-                "x": 9,                 "catX": "9",+                "x": 9,                 "y": 9             },             {-                "x": 10,                 "catX": "10",+                "x": 10,                 "y": 10             },             {-                "x": 11,                 "catX": "11",+                "x": 11,                 "y": 11             },             {-                "x": 12,                 "catX": "12",+                "x": 12,                 "y": 12             },             {-                "x": 13,                 "catX": "13",+                "x": 13,                 "y": 13             },             {-                "x": 14,                 "catX": "14",+                "x": 14,                 "y": 14             },             {-                "x": 15,                 "catX": "15",+                "x": 15,                 "y": 15             },             {-                "x": 16,                 "catX": "16",+                "x": 16,                 "y": 16             },             {-                "x": 17,                 "catX": "17",+                "x": 17,                 "y": 17             },             {-                "x": 18,                 "catX": "18",+                "x": 18,                 "y": 18             },             {-                "x": 19,                 "catX": "19",+                "x": 19,                 "y": 19             },             {-                "x": 20,                 "catX": "20",+                "x": 20,                 "y": 20             },             {-                "x": 21,                 "catX": "21",+                "x": 21,                 "y": 21             },             {-                "x": 22,                 "catX": "22",+                "x": 22,                 "y": 22             },             {-                "x": 23,                 "catX": "23",+                "x": 23,                 "y": 23             },             {-                "x": 24,                 "catX": "24",+                "x": 24,                 "y": 24             },             {-                "x": 25,                 "catX": "25",+                "x": 25,                 "y": 25             },             {-                "x": 26,                 "catX": "26",+                "x": 26,                 "y": 26             },             {-                "x": 27,                 "catX": "27",+                "x": 27,                 "y": 27             },             {-                "x": 28,                 "catX": "28",+                "x": 28,                 "y": 28             },             {-                "x": 29,                 "catX": "29",+                "x": 29,                 "y": 29             },             {-                "x": 30,                 "catX": "30",+                "x": 30,                 "y": 30             },             {-                "x": 31,                 "catX": "31",+                "x": 31,                 "y": 31             },             {-                "x": 32,                 "catX": "32",+                "x": 32,                 "y": 32             },             {-                "x": 33,                 "catX": "33",+                "x": 33,                 "y": 33             },             {-                "x": 34,                 "catX": "34",+                "x": 34,                 "y": 34             },             {-                "x": 35,                 "catX": "35",+                "x": 35,                 "y": 35             },             {-                "x": 36,                 "catX": "36",+                "x": 36,                 "y": 36             },             {-                "x": 37,                 "catX": "37",+                "x": 37,                 "y": 37             },             {-                "x": 38,                 "catX": "38",+                "x": 38,                 "y": 38             },             {-                "x": 39,                 "catX": "39",+                "x": 39,                 "y": 39             },             {-                "x": 40,                 "catX": "40",+                "x": 40,                 "y": 40             },             {-                "x": 41,                 "catX": "41",+                "x": 41,                 "y": 41             },             {-                "x": 42,                 "catX": "42",+                "x": 42,                 "y": 42             },             {-                "x": 43,                 "catX": "43",+                "x": 43,                 "y": 43             },             {-                "x": 44,                 "catX": "44",+                "x": 44,                 "y": 44             },             {-                "x": 45,                 "catX": "45",+                "x": 45,                 "y": 45             },             {-                "x": 46,                 "catX": "46",+                "x": 46,                 "y": 46             },             {-                "x": 47,                 "catX": "47",+                "x": 47,                 "y": 47             },             {-                "x": 48,                 "catX": "48",+                "x": 48,                 "y": 48             },             {-                "x": 49,                 "catX": "49",+                "x": 49,                 "y": 49             },             {-                "x": 50,                 "catX": "50",+                "x": 50,                 "y": 50             },             {-                "x": 51,                 "catX": "51",+                "x": 51,                 "y": 51             },             {-                "x": 52,                 "catX": "52",+                "x": 52,                 "y": 52             },             {-                "x": 53,                 "catX": "53",+                "x": 53,                 "y": 53             },             {-                "x": 54,                 "catX": "54",+                "x": 54,                 "y": 54             },             {-                "x": 55,                 "catX": "55",+                "x": 55,                 "y": 55             },             {-                "x": 56,                 "catX": "56",+                "x": 56,                 "y": 56             },             {-                "x": 57,                 "catX": "57",+                "x": 57,                 "y": 57             },             {-                "x": 58,                 "catX": "58",+                "x": 58,                 "y": 58             },             {-                "x": 59,                 "catX": "59",+                "x": 59,                 "y": 59             },             {-                "x": 60,                 "catX": "60",+                "x": 60,                 "y": 60             },             {-                "x": 61,                 "catX": "61",+                "x": 61,                 "y": 61             },             {-                "x": 62,                 "catX": "62",+                "x": 62,                 "y": 62             },             {-                "x": 63,                 "catX": "63",+                "x": 63,                 "y": 63             },             {-                "x": 64,                 "catX": "64",+                "x": 64,                 "y": 64             },             {-                "x": 65,                 "catX": "65",+                "x": 65,                 "y": 65             },             {-                "x": 66,                 "catX": "66",+                "x": 66,                 "y": 66             },             {-                "x": 67,                 "catX": "67",+                "x": 67,                 "y": 67             },             {-                "x": 68,                 "catX": "68",+                "x": 68,                 "y": 68             },             {-                "x": 69,                 "catX": "69",+                "x": 69,                 "y": 69             },             {-                "x": 70,                 "catX": "70",+                "x": 70,                 "y": 70             },             {-                "x": 71,                 "catX": "71",+                "x": 71,                 "y": 71             },             {-                "x": 72,                 "catX": "72",+                "x": 72,                 "y": 72             },             {-                "x": 73,                 "catX": "73",+                "x": 73,                 "y": 73             },             {-                "x": 74,                 "catX": "74",+                "x": 74,                 "y": 74             },             {-                "x": 75,                 "catX": "75",+                "x": 75,                 "y": 75             },             {-                "x": 76,                 "catX": "76",+                "x": 76,                 "y": 76             },             {-                "x": 77,                 "catX": "77",+                "x": 77,                 "y": 77             },             {-                "x": 78,                 "catX": "78",+                "x": 78,                 "y": 78             },             {-                "x": 79,                 "catX": "79",+                "x": 79,                 "y": 79             },             {-                "x": 80,                 "catX": "80",+                "x": 80,                 "y": 80             },             {-                "x": 81,                 "catX": "81",+                "x": 81,                 "y": 81             },             {-                "x": 82,                 "catX": "82",+                "x": 82,                 "y": 82             },             {-                "x": 83,                 "catX": "83",+                "x": 83,                 "y": 83             },             {-                "x": 84,                 "catX": "84",+                "x": 84,                 "y": 84             },             {-                "x": 85,                 "catX": "85",+                "x": 85,                 "y": 85             },             {-                "x": 86,                 "catX": "86",+                "x": 86,                 "y": 86             },             {-                "x": 87,                 "catX": "87",+                "x": 87,                 "y": 87             },             {-                "x": 88,                 "catX": "88",+                "x": 88,                 "y": 88             },             {-                "x": 89,                 "catX": "89",+                "x": 89,                 "y": 89             },             {-                "x": 90,                 "catX": "90",+                "x": 90,                 "y": 90             },             {-                "x": 91,                 "catX": "91",+                "x": 91,                 "y": 91             },             {-                "x": 92,                 "catX": "92",+                "x": 92,                 "y": 92             },             {-                "x": 93,                 "catX": "93",+                "x": 93,                 "y": 93             },             {-                "x": 94,                 "catX": "94",+                "x": 94,                 "y": 94             },             {-                "x": 95,                 "catX": "95",+                "x": 95,                 "y": 95             },             {-                "x": 96,                 "catX": "96",+                "x": 96,                 "y": 96             },             {-                "x": 97,                 "catX": "97",+                "x": 97,                 "y": 97             },             {-                "x": 98,                 "catX": "98",+                "x": 98,                 "y": 98             },             {-                "x": 99,                 "catX": "99",+                "x": 99,                 "y": 99             },             {-                "x": 100,                 "catX": "100",+                "x": 100,                 "y": 100             }         ]     },-    "width": "container",-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -518,5 +513,10 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "mark": {+        "point": true,+        "type": "line"+    },+    "width": "container" }
tests/specs/axis/singleline.vl view
@@ -1,28 +1,28 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "Origin",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {-            "field": "Horsepower",-            "type": "quantitative",             "axis": {                 "labelExpr": "datum.label + ' horses'"-            }+            },+            "field": "Horsepower",+            "type": "quantitative"         },         "y": {-            "field": "Miles_per_Gallon",-            "type": "quantitative",             "axis": {                 "labelExpr": "datum.label+' mpg'"-            }+            },+            "field": "Miles_per_Gallon",+            "type": "quantitative"         }-    }+    },+    "mark": "point" }
tests/specs/axis/zorder.vl view
@@ -1,20 +1,16 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "axisY": {-            "gridColor": "blue"+        "axis": {+            "gridWidth": 8         },         "axisX": {             "gridColor": "red"         },-        "axis": {-            "gridWidth": 8+        "axisY": {+            "gridColor": "blue"         }     },-    "mark": {-        "size": 5000,-        "opacity": 1,-        "type": "circle"-    },     "data": {         "values": [             {@@ -29,26 +25,30 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "zindex": 2-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {                 "zindex": 1-            }+            },+            "field": "y",+            "type": "quantitative"         }+    },+    "mark": {+        "opacity": 1,+        "size": 5000,+        "type": "circle"     } }
tests/specs/color/customContinuous.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Custom continuous colour scheme (red to blue ramp).",     "encoding": {         "color": {             "field": "Acceleration",@@ -21,12 +15,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -36,5 +30,11 @@             "type": "quantitative"         }     },-    "description": "Custom continuous colour scheme (red to blue ramp)."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/customDiscrete.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Custom discrete colours (red, green, blue).",     "encoding": {         "color": {             "field": "Origin",@@ -22,12 +16,12 @@             },             "type": "nominal"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -37,5 +31,11 @@             "type": "quantitative"         }     },-    "description": "Custom discrete colours (red, green, blue)."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/defContinuous.vl view
@@ -1,26 +1,20 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Default continuous colour scales.",     "encoding": {         "color": {             "field": "Acceleration",             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -30,5 +24,11 @@             "type": "quantitative"         }     },-    "description": "Default continuous colour scales."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/defNominal.vl view
@@ -1,26 +1,20 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Default nominal colour scales.",     "encoding": {         "color": {             "field": "Origin",             "type": "nominal"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -30,5 +24,11 @@             "type": "quantitative"         }     },-    "description": "Default nominal colour scales."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/defOrdinal.vl view
@@ -1,26 +1,20 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Default ordinal colour scales.",     "encoding": {         "color": {             "field": "Cylinders",             "type": "ordinal"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -30,5 +24,11 @@             "type": "quantitative"         }     },-    "description": "Default ordinal colour scales."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/gamma1.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix-long interpolation, gamma of -0.1",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": -0.1,                     "type": "cubehelix-long"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix-long interpolation, gamma of -0.1"+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/gamma2.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix-long interpolation, gamma of 0",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": 0,                     "type": "cubehelix-long"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix-long interpolation, gamma of 0"+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/gamma3.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix-long interpolation with default gamma value of 1",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": 1,                     "type": "cubehelix-long"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix-long interpolation with default gamma value of 1"+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/gamma4.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix-long interpolation, gamma of 2",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": 2,                     "type": "cubehelix-long"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix-long interpolation, gamma of 2"+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/gamma5.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix-long interpolation, gamma of 10",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": 10,                     "type": "cubehelix-long"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix-long interpolation, gamma of 10"+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp1.vl view
@@ -1,36 +1,30 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "HSL interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {+                "interpolate": {+                    "type": "hsl"+                },                 "range": [                     "yellow",                     "red"                 ],-                "interpolate": {-                    "type": "hsl"-                },                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -40,5 +34,11 @@             "type": "quantitative"         }     },-    "description": "HSL interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp2.vl view
@@ -1,36 +1,30 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "HSL-long interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {+                "interpolate": {+                    "type": "hsl-long"+                },                 "range": [                     "yellow",                     "red"                 ],-                "interpolate": {-                    "type": "hsl-long"-                },                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -40,5 +34,11 @@             "type": "quantitative"         }     },-    "description": "HSL-long interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp3.vl view
@@ -1,36 +1,30 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Lab interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {+                "interpolate": {+                    "type": "lab"+                },                 "range": [                     "yellow",                     "red"                 ],-                "interpolate": {-                    "type": "lab"-                },                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -40,5 +34,11 @@             "type": "quantitative"         }     },-    "description": "Lab interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp4.vl view
@@ -1,36 +1,30 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "HCL interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {+                "interpolate": {+                    "type": "hcl"+                },                 "range": [                     "yellow",                     "red"                 ],-                "interpolate": {-                    "type": "hcl"-                },                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -40,5 +34,11 @@             "type": "quantitative"         }     },-    "description": "HCL interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp5.vl view
@@ -1,36 +1,30 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "HCL-long interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {+                "interpolate": {+                    "type": "hcl-long"+                },                 "range": [                     "yellow",                     "red"                 ],-                "interpolate": {-                    "type": "hcl-long"-                },                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -40,5 +34,11 @@             "type": "quantitative"         }     },-    "description": "HCL-long interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp6.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": 1,                     "type": "cubehelix"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/interp7.vl view
@@ -1,37 +1,31 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "cube-helix-long interpolation.",     "encoding": {         "color": {             "field": "Acceleration",             "scale": {-                "range": [-                    "yellow",-                    "red"-                ],                 "interpolate": {                     "gamma": 1,                     "type": "cubehelix-long"                 },+                "range": [+                    "yellow",+                    "red"+                ],                 "type": "linear"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -41,5 +35,11 @@             "type": "quantitative"         }     },-    "description": "cube-helix-long interpolation."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/namedContinuous1.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Continuous colour scale based on named vega schame. Should use the entire plasma colour scheme.",     "encoding": {         "color": {             "field": "Acceleration",@@ -18,12 +12,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -33,5 +27,11 @@             "type": "quantitative"         }     },-    "description": "Continuous colour scale based on named vega schame. Should use the entire plasma colour scheme."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/namedContinuous2.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Continuous colour scale based on named vega schame. Should use the upper half of the plasma colour scheme.",     "encoding": {         "color": {             "field": "Acceleration",@@ -24,12 +18,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -39,5 +33,11 @@             "type": "quantitative"         }     },-    "description": "Continuous colour scale based on named vega schame. Should use the upper half of the plasma colour scheme."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/namedContinuous3.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Continuous colour scale based on named vega schame. Should use the flipped plasma colour scheme (i.e. red to orange).",     "encoding": {         "color": {             "field": "Acceleration",@@ -19,12 +13,12 @@             "sort": "descending",             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -34,5 +28,11 @@             "type": "quantitative"         }     },-    "description": "Continuous colour scale based on named vega schame. Should use the flipped plasma colour scheme (i.e. red to orange)."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/namedContinuous4.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Continuous colour scale based on named vega schame. Should use the first half of the flipped plasma colour scheme (i.e. red to orange).",     "encoding": {         "color": {             "field": "Acceleration",@@ -25,12 +19,12 @@             "sort": "descending",             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -40,5 +34,11 @@             "type": "quantitative"         }     },-    "description": "Continuous colour scale based on named vega schame. Should use the first half of the flipped plasma colour scheme (i.e. red to orange)."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale1.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Linear (default) colour scale.",     "encoding": {         "color": {             "field": "Acceleration",@@ -22,12 +16,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -37,5 +31,11 @@             "type": "quantitative"         }     },-    "description": "Linear (default) colour scale."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale3.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Power colour scale with default (1) exponent.",     "encoding": {         "color": {             "field": "Acceleration",@@ -22,12 +16,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -37,5 +31,11 @@             "type": "quantitative"         }     },-    "description": "Power colour scale with default (1) exponent."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale4.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Cubic Power colour scale.",     "encoding": {         "color": {             "field": "Acceleration",@@ -23,12 +17,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -38,5 +32,11 @@             "type": "quantitative"         }     },-    "description": "Cubic Power colour scale."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale5.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Square root colour scale.",     "encoding": {         "color": {             "field": "Acceleration",@@ -22,12 +16,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -37,5 +31,11 @@             "type": "quantitative"         }     },-    "description": "Square root colour scale."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale6.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Log colour scale.",     "encoding": {         "color": {             "field": "Acceleration",@@ -22,12 +16,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -37,5 +31,11 @@             "type": "quantitative"         }     },-    "description": "Log colour scale."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale7.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "SymLog colour scale with default slope constant (1).",     "encoding": {         "color": {             "field": "accelerationZScore",@@ -22,12 +16,12 @@             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -37,5 +31,11 @@             "type": "quantitative"         }     },-    "description": "SymLog colour scale with default slope constant (1)."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/color/scale8.vl view
@@ -1,34 +1,28 @@ {-    "transform": [-        {-            "as": "accelerationZScore",-            "calculate": "(datum.Acceleration - 15.52)/2.80"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "SymLog colour scale with slope constant of 0.01.",     "encoding": {         "color": {             "field": "accelerationZScore",             "scale": {+                "constant": 1.0e-2,                 "range": [                     "yellow",                     "red"                 ],-                "type": "symlog",-                "constant": 1.0e-2+                "type": "symlog"             },             "type": "quantitative"         },-        "size": {-            "value": 60-        },         "opacity": {             "value": 1         },+        "size": {+            "value": 60+        },         "x": {             "field": "Horsepower",             "type": "quantitative"@@ -38,5 +32,11 @@             "type": "quantitative"         }     },-    "description": "SymLog colour scale with slope constant of 0.01."+    "mark": "circle",+    "transform": [+        {+            "as": "accelerationZScore",+            "calculate": "(datum.Acceleration - 15.52)/2.80"+        }+    ] }
tests/specs/composite/boxplot1.vl view
@@ -1,23 +1,23 @@ {-    "mark": {-        "extent": "min-max",-        "type": "boxplot"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "extent": "min-max",+        "type": "boxplot"     } }
tests/specs/composite/boxplot2.vl view
@@ -1,23 +1,23 @@ {-    "mark": {-        "extent": 2,-        "type": "boxplot"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "extent": 2,+        "type": "boxplot"     } }
tests/specs/composite/boxplot3.vl view
@@ -1,42 +1,42 @@ {-    "mark": {-        "median": {-            "strokeWidth": 0,-            "size": 18,-            "fill": "black"-        },-        "box": {-            "color": "firebrick"-        },-        "rule": {-            "strokeWidth": 0.4-        },-        "extent": 0.5,-        "outliers": {-            "strokeWidth": 0.3,-            "color": "black",-            "size": 10-        },-        "type": "boxplot",-        "ticks": {-            "size": 8-        }-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "box": {+            "color": "firebrick"+        },+        "extent": 0.5,+        "median": {+            "fill": "black",+            "size": 18,+            "strokeWidth": 0+        },+        "outliers": {+            "color": "black",+            "size": 10,+            "strokeWidth": 0.3+        },+        "rule": {+            "strokeWidth": 0.4+        },+        "ticks": {+            "size": 8+        },+        "type": "boxplot"     } }
tests/specs/composite/boxplotnobox.vl view
@@ -1,29 +1,29 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "boxplot": {             "ticks": true         }     },-    "mark": {-        "box": false,-        "extent": 0.5,-        "type": "boxplot"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "box": false,+        "extent": 0.5,+        "type": "boxplot"     } }
tests/specs/composite/boxplotnomedian.vl view
@@ -1,29 +1,29 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "boxplot": {             "ticks": true         }     },-    "mark": {-        "median": false,-        "extent": 0.5,-        "type": "boxplot"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "extent": 0.5,+        "median": false,+        "type": "boxplot"     } }
tests/specs/composite/boxplotnooutliers.vl view
@@ -1,29 +1,29 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "boxplot": {             "ticks": true         }     },-    "mark": {-        "extent": 0.5,-        "outliers": false,-        "type": "boxplot"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "extent": 0.5,+        "outliers": false,+        "type": "boxplot"     } }
tests/specs/composite/boxplotnorule.vl view
@@ -1,29 +1,29 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "boxplot": {             "ticks": true         }     },-    "mark": {-        "rule": false,-        "extent": 0.5,-        "type": "boxplot"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "extent": 0.5,+        "rule": false,+        "type": "boxplot"     } }
tests/specs/composite/boxplotnoticks.vl view
@@ -1,29 +1,29 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "boxplot": {             "ticks": true         }     },-    "mark": {-        "extent": 0.5,-        "type": "boxplot",-        "ticks": false-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "age",             "type": "ordinal"         },         "y": {-            "field": "people",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }+    },+    "mark": {+        "extent": 0.5,+        "ticks": false,+        "type": "boxplot"     } }
tests/specs/composite/errorband1.vl view
@@ -1,14 +1,8 @@ {-    "mark": {-        "borders": true,-        "extent": "ci",-        "interpolate": "monotone",-        "type": "errorband"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "Year",@@ -23,5 +17,11 @@             "title": "Miles per Gallon (95% CI)",             "type": "quantitative"         }+    },+    "mark": {+        "borders": true,+        "extent": "ci",+        "interpolate": "monotone",+        "type": "errorband"     } }
tests/specs/composite/errorband1no.vl view
@@ -1,14 +1,8 @@ {-    "mark": {-        "borders": false,-        "extent": "ci",-        "interpolate": "monotone",-        "type": "errorband"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "Year",@@ -23,5 +17,11 @@             "title": "Miles per Gallon (95% CI)",             "type": "quantitative"         }+    },+    "mark": {+        "borders": false,+        "extent": "ci",+        "interpolate": "monotone",+        "type": "errorband"     } }
tests/specs/composite/errorband2.vl view
@@ -1,14 +1,8 @@ {-    "mark": {-        "borders": true,-        "extent": "stdev",-        "interpolate": "monotone",-        "type": "errorband"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "Year",@@ -23,5 +17,11 @@             "title": "Miles per Gallon (1 stdev)",             "type": "quantitative"         }+    },+    "mark": {+        "borders": true,+        "extent": "stdev",+        "interpolate": "monotone",+        "type": "errorband"     } }
tests/specs/composite/errorband2no.vl view
@@ -1,14 +1,8 @@ {-    "mark": {-        "borders": false,-        "extent": "stdev",-        "interpolate": "monotone",-        "type": "errorband"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "Year",@@ -23,5 +17,11 @@             "title": "Miles per Gallon (1 stdev)",             "type": "quantitative"         }+    },+    "mark": {+        "borders": false,+        "extent": "stdev",+        "interpolate": "monotone",+        "type": "errorband"     } }
tests/specs/composite/errorbar1.vl view
@@ -1,15 +1,8 @@ {-    "mark": {-        "extent": "ci",-        "type": "errorbar",-        "ticks": {-            "stroke": "blue"-        }-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "yield",@@ -22,5 +15,12 @@             "field": "variety",             "type": "ordinal"         }+    },+    "mark": {+        "extent": "ci",+        "ticks": {+            "stroke": "blue"+        },+        "type": "errorbar"     } }
tests/specs/composite/errorbar2.vl view
@@ -1,15 +1,8 @@ {-    "mark": {-        "extent": "stdev",-        "type": "errorbar",-        "ticks": {-            "stroke": "blue"-        }-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "yield",@@ -22,5 +15,12 @@             "field": "variety",             "type": "ordinal"         }+    },+    "mark": {+        "extent": "stdev",+        "ticks": {+            "stroke": "blue"+        },+        "type": "errorbar"     } }
tests/specs/composite/errorbar3.vl view
@@ -1,14 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Error bars with color encoding",     "layer": [         {-            "mark": {-                "type": "errorbar",-                "ticks": true-            },             "encoding": {                 "color": {                     "value": "#4682b4"@@ -24,26 +21,29 @@                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "ticks": true,+                "type": "errorbar"             }         },         {-            "mark": {-                "color": "black",-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {-                    "field": "yield",                     "aggregate": "mean",+                    "field": "yield",                     "type": "quantitative"                 },                 "y": {                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "color": "black",+                "filled": true,+                "type": "point"             }         }-    ],-    "description": "Error bars with color encoding"+    ] }
tests/specs/composite/errorbar3no.vl view
@@ -1,14 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Error bars with color encoding",     "layer": [         {-            "mark": {-                "type": "errorbar",-                "ticks": false-            },             "encoding": {                 "color": {                     "value": "#4682b4"@@ -24,26 +21,29 @@                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "ticks": false,+                "type": "errorbar"             }         },         {-            "mark": {-                "color": "black",-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {-                    "field": "yield",                     "aggregate": "mean",+                    "field": "yield",                     "type": "quantitative"                 },                 "y": {                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "color": "black",+                "filled": true,+                "type": "point"             }         }-    ],-    "description": "Error bars with color encoding"+    ] }
tests/specs/composite/errorbar4.vl view
@@ -1,39 +1,36 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "yieldError2": -10.55,-                "yieldError": 7.55,                 "variety": "Glabron",-                "yield": 32.4+                "yield": 32.4,+                "yieldError": 7.55,+                "yieldError2": -10.55             },             {-                "yieldError2": -3.98,-                "yieldError": 6.98,                 "variety": "Manchuria",-                "yield": 30.97+                "yield": 30.97,+                "yieldError": 6.98,+                "yieldError2": -3.98             },             {-                "yieldError2": -0.92,-                "yieldError": 3.92,                 "variety": "No. 457",-                "yield": 33.96+                "yield": 33.96,+                "yieldError": 3.92,+                "yieldError2": -0.92             },             {-                "yieldError2": -15.97,-                "yieldError": 11.97,                 "variety": "No. 462",-                "yield": 30.45+                "yield": 30.45,+                "yieldError": 11.97,+                "yieldError2": -15.97             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Symetric error bars encoded with xError channel",     "layer": [         {-            "mark": {-                "type": "errorbar",-                "ticks": true-            },             "encoding": {                 "x": {                     "field": "yield",@@ -49,14 +46,13 @@                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "ticks": true,+                "type": "errorbar"             }         },         {-            "mark": {-                "color": "black",-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {                     "field": "yield",@@ -66,8 +62,12 @@                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "color": "black",+                "filled": true,+                "type": "point"             }         }-    ],-    "description": "Symetric error bars encoded with xError channel"+    ] }
tests/specs/composite/errorbar5.vl view
@@ -1,43 +1,37 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "yieldError2": -10.55,-                "yieldError": 7.55,                 "variety": "Glabron",-                "yield": 32.4+                "yield": 32.4,+                "yieldError": 7.55,+                "yieldError2": -10.55             },             {-                "yieldError2": -3.98,-                "yieldError": 6.98,                 "variety": "Manchuria",-                "yield": 30.97+                "yield": 30.97,+                "yieldError": 6.98,+                "yieldError2": -3.98             },             {-                "yieldError2": -0.92,-                "yieldError": 3.92,                 "variety": "No. 457",-                "yield": 33.96+                "yield": 33.96,+                "yieldError": 3.92,+                "yieldError2": -0.92             },             {-                "yieldError2": -15.97,-                "yieldError": 11.97,                 "variety": "No. 462",-                "yield": 30.45+                "yield": 30.45,+                "yieldError": 11.97,+                "yieldError2": -15.97             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Asymetric error bars encoded with xError and xError2 channels",     "layer": [         {-            "mark": {-                "type": "errorbar",-                "ticks": true-            },             "encoding": {-                "xError2": {-                    "field": "yieldError2"-                },                 "x": {                     "field": "yield",                     "scale": {@@ -48,18 +42,20 @@                 "xError": {                     "field": "yieldError"                 },+                "xError2": {+                    "field": "yieldError2"+                },                 "y": {                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "ticks": true,+                "type": "errorbar"             }         },         {-            "mark": {-                "color": "black",-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {                     "field": "yield",@@ -69,8 +65,12 @@                     "field": "variety",                     "type": "ordinal"                 }+            },+            "mark": {+                "color": "black",+                "filled": true,+                "type": "point"             }         }-    ],-    "description": "Asymetric error bars encoded with xError and xError2 channels"+    ] }
tests/specs/composite/errorbar6.vl view
@@ -1,43 +1,37 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "yieldError2": -10.55,-                "yieldError": 7.55,                 "variety": "Glabron",-                "yield": 32.4+                "yield": 32.4,+                "yieldError": 7.55,+                "yieldError2": -10.55             },             {-                "yieldError2": -3.98,-                "yieldError": 6.98,                 "variety": "Manchuria",-                "yield": 30.97+                "yield": 30.97,+                "yieldError": 6.98,+                "yieldError2": -3.98             },             {-                "yieldError2": -0.92,-                "yieldError": 3.92,                 "variety": "No. 457",-                "yield": 33.96+                "yield": 33.96,+                "yieldError": 3.92,+                "yieldError2": -0.92             },             {-                "yieldError2": -15.97,-                "yieldError": 11.97,                 "variety": "No. 462",-                "yield": 30.45+                "yield": 30.45,+                "yieldError": 11.97,+                "yieldError2": -15.97             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Symetric error bars encoded with yError channel",     "layer": [         {-            "mark": {-                "type": "errorbar",-                "ticks": true-            },             "encoding": {-                "yError": {-                    "field": "yieldError"-                },                 "x": {                     "field": "variety",                     "type": "ordinal"@@ -48,15 +42,17 @@                         "zero": false                     },                     "type": "quantitative"+                },+                "yError": {+                    "field": "yieldError"                 }+            },+            "mark": {+                "ticks": true,+                "type": "errorbar"             }         },         {-            "mark": {-                "color": "black",-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {                     "field": "variety",@@ -66,8 +62,12 @@                     "field": "yield",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "black",+                "filled": true,+                "type": "point"             }         }-    ],-    "description": "Symetric error bars encoded with yError channel"+    ] }
tests/specs/composite/errorbar7.vl view
@@ -1,46 +1,37 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "yieldError2": -10.55,-                "yieldError": 7.55,                 "variety": "Glabron",-                "yield": 32.4+                "yield": 32.4,+                "yieldError": 7.55,+                "yieldError2": -10.55             },             {-                "yieldError2": -3.98,-                "yieldError": 6.98,                 "variety": "Manchuria",-                "yield": 30.97+                "yield": 30.97,+                "yieldError": 6.98,+                "yieldError2": -3.98             },             {-                "yieldError2": -0.92,-                "yieldError": 3.92,                 "variety": "No. 457",-                "yield": 33.96+                "yield": 33.96,+                "yieldError": 3.92,+                "yieldError2": -0.92             },             {-                "yieldError2": -15.97,-                "yieldError": 11.97,                 "variety": "No. 462",-                "yield": 30.45+                "yield": 30.45,+                "yieldError": 11.97,+                "yieldError2": -15.97             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Asymetric error bars encoded with yError and yError2 channels",     "layer": [         {-            "mark": {-                "type": "errorbar",-                "ticks": true-            },             "encoding": {-                "yError2": {-                    "field": "yieldError2"-                },-                "yError": {-                    "field": "yieldError"-                },                 "x": {                     "field": "variety",                     "type": "ordinal"@@ -51,15 +42,20 @@                         "zero": false                     },                     "type": "quantitative"+                },+                "yError": {+                    "field": "yieldError"+                },+                "yError2": {+                    "field": "yieldError2"                 }+            },+            "mark": {+                "ticks": true,+                "type": "errorbar"             }         },         {-            "mark": {-                "color": "black",-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {                     "field": "variety",@@ -69,8 +65,12 @@                     "field": "yield",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "black",+                "filled": true,+                "type": "point"             }         }-    ],-    "description": "Asymetric error bars encoded with yError and yError2 channels"+    ] }
tests/specs/conditional/axisCondition1.vl view
@@ -1,42 +1,42 @@ {-    "height": 600,-    "mark": {-        "opacity": 0.1,-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "IMDB_Rating",-            "type": "quantitative",             "axis": {-                "tickCount": 20,+                "gridColor": {+                    "condition": {+                        "test": "datum.value <= 7",+                        "value": "green"+                    },+                    "value": "red"+                },                 "gridDash": {-                    "value": [],                     "condition": {+                        "test": "datum.value <= 5",                         "value": [                             5,                             5-                        ],-                        "test": "datum.value <= 5"-                    }+                        ]+                    },+                    "value": []                 },-                "gridColor": {-                    "value": "red",-                    "condition": {-                        "value": "green",-                        "test": "datum.value <= 7"-                    }-                }-            }+                "tickCount": 20+            },+            "field": "IMDB_Rating",+            "type": "quantitative"         },         "y": {             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }-    }+    },+    "height": 600,+    "mark": {+        "opacity": 0.1,+        "type": "point"+    },+    "width": 600 }
tests/specs/conditional/axisCondition2.vl view
@@ -1,70 +1,70 @@ {-    "height": 600,-    "mark": {-        "opacity": 0.1,-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "IMDB_Rating",-            "type": "quantitative",             "axis": {-                "tickSize": {-                    "value": 5,+                "labelPadding": {                     "condition": {-                        "value": 20,-                        "test": "(datum.value > 0) && (datum.value < 3)"-                    }+                        "test": "(datum.value >= 1) && (datum.value <= 4)",+                        "value": 20+                    },+                    "value": 5                 },-                "tickWidth": {-                    "value": 2,+                "tickColor": {                     "condition": {-                        "value": 5,-                        "test": "datum.label =='4.0'"-                    }+                        "test": "datum.value <= 2",+                        "value": "red"+                    },+                    "value": "blue"                 },+                "tickCount": 20,                 "tickDash": {-                    "value": [],                     "condition": {+                        "test": "(datum.value >= 5) && (datum.value <= 8)",                         "value": [                             2,                             2-                        ],-                        "test": "(datum.value >= 5) && (datum.value <= 8)"-                    }+                        ]+                    },+                    "value": []                 },-                "tickCount": 20,                 "tickOpacity": {-                    "value": 0.8,                     "condition": {-                        "value": 0.3,-                        "test": "datum.value >=8"-                    }+                        "test": "datum.value >=8",+                        "value": 0.3+                    },+                    "value": 0.8                 },-                "labelPadding": {-                    "value": 5,+                "tickSize": {                     "condition": {-                        "value": 20,-                        "test": "(datum.value >= 1) && (datum.value <= 4)"-                    }+                        "test": "(datum.value > 0) && (datum.value < 3)",+                        "value": 20+                    },+                    "value": 5                 },-                "tickColor": {-                    "value": "blue",+                "tickWidth": {                     "condition": {-                        "value": "red",-                        "test": "datum.value <= 2"-                    }+                        "test": "datum.label =='4.0'",+                        "value": 5+                    },+                    "value": 2                 }-            }+            },+            "field": "IMDB_Rating",+            "type": "quantitative"         },         "y": {             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }-    }+    },+    "height": 600,+    "mark": {+        "opacity": 0.1,+        "type": "point"+    },+    "width": 600 }
tests/specs/conditional/axisCondition3.vl view
@@ -1,81 +1,81 @@ {-    "height": 600,-    "mark": {-        "opacity": 0.1,-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "IMDB_Rating",-            "type": "quantitative",             "axis": {-                "labelOpacity": {-                    "value": 0.8,+                "labelAlign": {                     "condition": {-                        "value": 0.3,-                        "test": "datum.value >=9"-                    }+                        "test": "datum.value <= 1",+                        "value": "right"+                    },+                    "value": "left"                 },-                "labelFontStyle": {-                    "value": "italic",+                "labelBaseline": {                     "condition": {-                        "value": "normal",-                        "test": "datum.value <=8"-                    }+                        "test": "datum.value <= 3",+                        "value": "top"+                    },+                    "value": "bottom"                 },                 "labelColor": {-                    "value": "blue",                     "condition": {-                        "value": "red",-                        "test": "datum.value <= 2"-                    }+                        "test": "datum.value <= 2",+                        "value": "red"+                    },+                    "value": "blue"                 },-                "tickCount": 20,-                "labelFontWeight": {-                    "value": 100,+                "labelFont": {                     "condition": {-                        "value": "bold",-                        "test": "datum.label =='4.0'"-                    }+                        "test": "datum.value <= 4",+                        "value": "serif"+                    },+                    "value": "sans-serif"                 },-                "labelBaseline": {-                    "value": "bottom",+                "labelFontSize": {                     "condition": {-                        "value": "top",-                        "test": "datum.value <= 3"-                    }+                        "test": "datum.value <= 6",+                        "value": 12+                    },+                    "value": 18                 },-                "labelFont": {-                    "value": "sans-serif",+                "labelFontStyle": {                     "condition": {-                        "value": "serif",-                        "test": "datum.value <= 4"-                    }+                        "test": "datum.value <=8",+                        "value": "normal"+                    },+                    "value": "italic"                 },-                "labelFontSize": {-                    "value": 18,+                "labelFontWeight": {                     "condition": {-                        "value": 12,-                        "test": "datum.value <= 6"-                    }+                        "test": "datum.label =='4.0'",+                        "value": "bold"+                    },+                    "value": 100                 },-                "labelAlign": {-                    "value": "left",+                "labelOpacity": {                     "condition": {-                        "value": "right",-                        "test": "datum.value <= 1"-                    }-                }-            }+                        "test": "datum.value >=9",+                        "value": 0.3+                    },+                    "value": 0.8+                },+                "tickCount": 20+            },+            "field": "IMDB_Rating",+            "type": "quantitative"         },         "y": {             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }-    }+    },+    "height": 600,+    "mark": {+        "opacity": 0.1,+        "type": "point"+    },+    "width": 600 }
tests/specs/conditional/axisDateCondition1.vl view
@@ -1,25 +1,13 @@ {-    "mark": {-        "borders": true,-        "extent": "iqr",-        "interpolate": "monotone",-        "type": "errorband"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "Year",-            "timeUnit": "year",-            "type": "temporal",             "axis": {                 "gridWidth": {-                    "value": 1,                     "condition": {-                        "value": 4,                         "test": {                             "equal": {                                 "date": 1,@@ -27,10 +15,15 @@                             },                             "field": "value",                             "timeUnit": "monthdate"-                        }-                    }+                        },+                        "value": 4+                    },+                    "value": 1                 }-            }+            },+            "field": "Year",+            "timeUnit": "year",+            "type": "temporal"         },         "y": {             "field": "Miles_per_Gallon",@@ -39,5 +32,12 @@             },             "type": "quantitative"         }-    }+    },+    "mark": {+        "borders": true,+        "extent": "iqr",+        "interpolate": "monotone",+        "type": "errorband"+    },+    "width": 600 }
tests/specs/conditional/axisconditionlabeloffset.vl view
@@ -1,32 +1,32 @@ {-    "height": 600,-    "mark": {-        "opacity": 0.1,-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "IMDB_Rating",-            "type": "quantitative",             "axis": {                 "labelOffset": {-                    "value": 5,                     "condition": {-                        "value": 10,-                        "test": "datum.value <= 5"-                    }+                        "test": "datum.value <= 5",+                        "value": 10+                    },+                    "value": 5                 },                 "tickCount": 20-            }+            },+            "field": "IMDB_Rating",+            "type": "quantitative"         },         "y": {             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }-    }+    },+    "height": 600,+    "mark": {+        "opacity": 0.1,+        "type": "point"+    },+    "width": 600 }
tests/specs/conditional/bindScales1.vl view
@@ -1,17 +1,8 @@ {-    "height": 300,-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "myZoomPan": {-            "bind": "scales",-            "type": "interval"-        }-    },     "encoding": {         "x": {             "field": "Horsepower",@@ -21,5 +12,14 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "circle",+    "selection": {+        "myZoomPan": {+            "bind": "scales",+            "type": "interval"+        }+    },+    "width": 300 }
tests/specs/conditional/bindScales2.vl view
@@ -1,18 +1,8 @@ {-    "height": 300,-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "myZoomPan": {-            "clear": "click[event.shiftKey]",-            "bind": "scales",-            "type": "interval"-        }-    },     "encoding": {         "x": {             "field": "Horsepower",@@ -22,5 +12,15 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "circle",+    "selection": {+        "myZoomPan": {+            "bind": "scales",+            "clear": "click[event.shiftKey]",+            "type": "interval"+        }+    },+    "width": 300 }
tests/specs/conditional/markCondition1.vl view
@@ -1,31 +1,25 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "mark": {             "invalid": null         }     },-    "mark": {-        "tooltip": {-            "content": "encoding"-        },-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {-            "value": "#0099ee",             "condition": {-                "value": "#ddd",                 "test": {                     "or": [                         "datum.IMDB_Rating === null",                         "datum.Rotten_Tomatoes_Rating === null"                     ]-                }-            }+                },+                "value": "#ddd"+            },+            "value": "#0099ee"         },         "x": {             "field": "IMDB_Rating",@@ -35,5 +29,11 @@             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }+    },+    "mark": {+        "tooltip": {+            "content": "encoding"+        },+        "type": "point"     } }
tests/specs/conditional/markCondition2.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "size": 800,-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -25,29 +22,32 @@             }         ]     },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {-            "value": "black",             "condition": [                 {-                    "value": "blue",-                    "test": "datum.value < 40"+                    "test": "datum.value < 40",+                    "value": "blue"                 },                 {-                    "value": "red",-                    "test": "datum.value < 50"+                    "test": "datum.value < 50",+                    "value": "red"                 },                 {-                    "value": "yellow",-                    "test": "datum.value < 60"+                    "test": "datum.value < 60",+                    "value": "yellow"                 }-            ]+            ],+            "value": "black"         },         "x": {             "field": "value",             "type": "ordinal"         }-    }+    },+    "mark": {+        "size": 800,+        "type": "circle"+    },+    "width": 400 }
tests/specs/conditional/selectionCondition1.vl view
@@ -1,33 +1,12 @@ {-    "mark": {-        "cursor": "grab",-        "type": "rect"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "alex": {-            "type": "interval",-            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",-            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove"-        },-        "morgan": {-            "mark": {-                "stroke": "#e34a33",-                "fill": "#fdbb84",-                "fillOpacity": 0.5-            },-            "type": "interval",-            "translate": "[mousedown[event.shiftKey], mouseup] > mousemove",-            "on": "[mousedown[event.shiftKey], mouseup] > mousemove"-        }-    },     "encoding": {         "color": {-            "field": "*",             "aggregate": "count",+            "field": "*",             "type": "quantitative"         },         "x": {@@ -37,6 +16,27 @@         "y": {             "field": "Origin",             "type": "ordinal"+        }+    },+    "mark": {+        "cursor": "grab",+        "type": "rect"+    },+    "selection": {+        "alex": {+            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "type": "interval"+        },+        "morgan": {+            "mark": {+                "fill": "#fdbb84",+                "fillOpacity": 0.5,+                "stroke": "#e34a33"+            },+            "on": "[mousedown[event.shiftKey], mouseup] > mousemove",+            "translate": "[mousedown[event.shiftKey], mouseup] > mousemove",+            "type": "interval"         }     } }
tests/specs/conditional/selectionCondition2.vl view
@@ -1,35 +1,13 @@ {-    "mark": {-        "cursor": "grab",-        "type": "rect"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "alex": {-            "type": "interval",-            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",-            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove"-        },-        "morgan": {-            "mark": {-                "stroke": "#e34a33",-                "fill": "#fdbb84",-                "fillOpacity": 0.5-            },-            "type": "interval",-            "translate": "[mousedown[event.shiftKey], mouseup] > mousemove",-            "on": "[mousedown[event.shiftKey], mouseup] > mousemove"-        }-    },     "encoding": {         "color": {-            "value": "gray",             "condition": {-                "field": "*",                 "aggregate": "count",+                "field": "*",                 "selection": {                     "and": [                         "alex",@@ -37,7 +15,8 @@                     ]                 },                 "type": "quantitative"-            }+            },+            "value": "gray"         },         "x": {             "field": "Cylinders",@@ -46,6 +25,27 @@         "y": {             "field": "Origin",             "type": "ordinal"+        }+    },+    "mark": {+        "cursor": "grab",+        "type": "rect"+    },+    "selection": {+        "alex": {+            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "type": "interval"+        },+        "morgan": {+            "mark": {+                "fill": "#fdbb84",+                "fillOpacity": 0.5,+                "stroke": "#e34a33"+            },+            "on": "[mousedown[event.shiftKey], mouseup] > mousemove",+            "translate": "[mousedown[event.shiftKey], mouseup] > mousemove",+            "type": "interval"         }     } }
tests/specs/conditional/selectionCondition3.vl view
@@ -1,15 +1,10 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },     "vconcat": [         {-            "mark": "point",-            "selection": {-                "brush": {-                    "type": "interval"-                }-            },             "encoding": {                 "x": {                     "field": "Horsepower",@@ -19,22 +14,15 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }+            },+            "mark": "point",+            "selection": {+                "brush": {+                    "type": "interval"+                }             }         },         {-            "transform": [-                {-                    "filter": {-                        "and": [-                            {-                                "selection": "brush"-                            },-                            "datum.Weight_in_lbs > 3000"-                        ]-                    }-                }-            ],-            "mark": "point",             "encoding": {                 "x": {                     "field": "Acceleration",@@ -56,8 +44,20 @@                     },                     "type": "quantitative"                 }-            }+            },+            "mark": "point",+            "transform": [+                {+                    "filter": {+                        "and": [+                            {+                                "selection": "brush"+                            },+                            "datum.Weight_in_lbs > 3000"+                        ]+                    }+                }+            ]         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/conditional/selectionCondition4.vl view
@@ -1,29 +1,17 @@ {-    "mark": {-        "cursor": "grab",-        "type": "rect"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "mySelection": {-            "clear": false,-            "type": "interval",-            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",-            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove"-        }-    },     "encoding": {         "color": {-            "value": "gray",             "condition": {-                "field": "*",                 "aggregate": "count",+                "field": "*",                 "selection": "mySelection",                 "type": "quantitative"-            }+            },+            "value": "gray"         },         "x": {             "field": "Cylinders",@@ -32,6 +20,18 @@         "y": {             "field": "Origin",             "type": "ordinal"+        }+    },+    "mark": {+        "cursor": "grab",+        "type": "rect"+    },+    "selection": {+        "mySelection": {+            "clear": false,+            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "type": "interval"         }     } }
tests/specs/conditional/selectionCondition5.vl view
@@ -1,30 +1,17 @@ {-    "mark": {-        "cursor": "grab",-        "type": "rect"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "mySelection": {-            "empty": "none",-            "clear": "mouseup",-            "type": "interval",-            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",-            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove"-        }-    },     "encoding": {         "color": {-            "value": "gray",             "condition": {-                "field": "*",                 "aggregate": "count",+                "field": "*",                 "selection": "mySelection",                 "type": "quantitative"-            }+            },+            "value": "gray"         },         "x": {             "field": "Cylinders",@@ -33,6 +20,19 @@         "y": {             "field": "Origin",             "type": "ordinal"+        }+    },+    "mark": {+        "cursor": "grab",+        "type": "rect"+    },+    "selection": {+        "mySelection": {+            "clear": "mouseup",+            "empty": "none",+            "on": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "translate": "[mousedown[!event.shiftKey], mouseup] > mousemove",+            "type": "interval"         }     } }
tests/specs/conditional/selectionHeatMap.vl view
@@ -1,92 +1,92 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "scale": {-            "bandPaddingInner": 0,-            "bandPaddingOuter": 0+        "axis": {+            "domain": false         },         "range": {             "ramp": {                 "scheme": "yellowgreenblue"             }         },+        "scale": {+            "bandPaddingInner": 0,+            "bandPaddingOuter": 0+        },         "view": {             "step": 40-        },-        "axis": {-            "domain": false         }     },-    "mark": {-        "strokeWidth": 2,-        "type": "rect"-    },     "data": {         "values": [             {-                "predicted": "A",+                "actual": "A",                 "count": 13,-                "actual": "A"+                "predicted": "A"             },             {-                "predicted": "B",+                "actual": "A",                 "count": 0,-                "actual": "A"+                "predicted": "B"             },             {-                "predicted": "C",+                "actual": "A",                 "count": 0,-                "actual": "A"+                "predicted": "C"             },             {-                "predicted": "A",+                "actual": "B",                 "count": 0,-                "actual": "B"+                "predicted": "A"             },             {-                "predicted": "B",+                "actual": "B",                 "count": 10,-                "actual": "B"+                "predicted": "B"             },             {-                "predicted": "C",+                "actual": "B",                 "count": 6,-                "actual": "B"+                "predicted": "C"             },             {-                "predicted": "A",+                "actual": "C",                 "count": 0,-                "actual": "C"+                "predicted": "A"             },             {-                "predicted": "B",+                "actual": "C",                 "count": 0,-                "actual": "C"+                "predicted": "B"             },             {-                "predicted": "C",+                "actual": "C",                 "count": 9,-                "actual": "C"+                "predicted": "C"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "highlight": {-            "type": "single"-        }-    },     "encoding": {+        "fill": {+            "field": "count",+            "type": "quantitative"+        },         "opacity": {-            "value": 0.5,             "condition": {-                "value": 1,-                "selection": "highlight"-            }+                "selection": "highlight",+                "value": 1+            },+            "value": 0.5         },+        "order": {+            "condition": {+                "selection": "highlight",+                "value": 1+            },+            "value": 0+        },         "stroke": {-            "value": null,             "condition": {-                "value": "black",                 "test": {                     "and": [                         {@@ -94,27 +94,27 @@                         },                         "length(data(\"highlight_store\"))"                     ]-                }-            }-        },-        "fill": {-            "field": "count",-            "type": "quantitative"+                },+                "value": "black"+            },+            "value": null         },         "x": {             "field": "predicted",             "type": "nominal"         },-        "order": {-            "value": 0,-            "condition": {-                "value": 1,-                "selection": "highlight"-            }-        },         "y": {             "field": "actual",             "type": "nominal"+        }+    },+    "mark": {+        "strokeWidth": 2,+        "type": "rect"+    },+    "selection": {+        "highlight": {+            "type": "single"         }     } }
tests/specs/config/axisCfg1.vl view
@@ -1,24 +1,17 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "axis": {+            "labelFont": "serif",             "labelFontStyle": "bold",+            "titleAnchor": "end",             "titleFont": "serif",-            "titleFontStyle": "italic",-            "labelFont": "serif",-            "titleAnchor": "end"+            "titleFontStyle": "italic"         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -36,5 +29,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/breaklinecfg.vl view
@@ -1,8 +1,8 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "lineBreak": "X"     },-    "mark": "text",     "data": {         "values": [             {@@ -22,7 +22,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "text": {             "field": "l",@@ -36,5 +35,6 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "mark": "text" }
tests/specs/config/dark.vl view
@@ -1,13 +1,38 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "axis": {+            "domainColor": "yellow",+            "gridColor": "rgb(255,255,200)",+            "gridOpacity": 0.2,+            "labelColor": "#fcf",+            "labelFont": "Roboto",+            "tickColor": "white",+            "titleColor": "rgb(200,255,200)",+            "titleFont": "Roboto"+        },+        "background": "black",+        "legend": {+            "direction": "horizontal",+            "fillColor": "#333",+            "gradientStrokeColor": "yellow",+            "labelColor": "white",+            "labelFont": "Roboto",+            "strokeColor": "#444",+            "symbolFillColor": "red",+            "titleColor": "rgb(200,200,200)",+            "titleFont": "Roboto"+        },+        "title": {+            "color": "#fff",+            "font": "Roboto"+        }+    },+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },     "hconcat": [         {-            "height": 200,-            "mark": {-                "size": 100,-                "type": "point"-            },-            "width": 200,-            "title": "Car Scatter",             "encoding": {                 "color": {                     "field": "Cylinders",@@ -25,13 +50,16 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": {+                "size": 100,+                "type": "point"+            },+            "title": "Car Scatter",+            "width": 200         },         {-            "height": 200,-            "mark": "bar",-            "width": 200,-            "title": "Car Histogram",             "encoding": {                 "color": {                     "field": "Origin",@@ -45,13 +73,13 @@                     "aggregate": "count",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "bar",+            "title": "Car Histogram",+            "width": 200         },         {-            "height": 200,-            "mark": "area",-            "width": 200,-            "title": "Car Streamgraph",             "encoding": {                 "color": {                     "field": "Origin",@@ -64,49 +92,21 @@                 },                 "y": {                     "aggregate": "count",-                    "type": "quantitative",                     "axis": null,-                    "stack": "center"+                    "stack": "center",+                    "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "area",+            "title": "Car Streamgraph",+            "width": 200         }     ],-    "config": {-        "title": {-            "color": "#fff",-            "font": "Roboto"-        },-        "axis": {-            "domainColor": "yellow",-            "labelColor": "#fcf",-            "titleFont": "Roboto",-            "titleColor": "rgb(200,255,200)",-            "gridColor": "rgb(255,255,200)",-            "labelFont": "Roboto",-            "tickColor": "white",-            "gridOpacity": 0.2-        },-        "background": "black",-        "legend": {-            "gradientStrokeColor": "yellow",-            "fillColor": "#333",-            "direction": "horizontal",-            "labelColor": "white",-            "titleFont": "Roboto",-            "symbolFillColor": "red",-            "titleColor": "rgb(200,200,200)",-            "labelFont": "Roboto",-            "strokeColor": "#444"-        }-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },     "resolve": {         "scale": {             "color": "independent",             "shape": "independent"         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    } }
tests/specs/config/default.vl view
@@ -1,13 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {},+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },     "hconcat": [         {-            "height": 200,-            "mark": {-                "size": 100,-                "type": "point"-            },-            "width": 200,-            "title": "Car Scatter",             "encoding": {                 "color": {                     "field": "Cylinders",@@ -25,13 +23,16 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": {+                "size": 100,+                "type": "point"+            },+            "title": "Car Scatter",+            "width": 200         },         {-            "height": 200,-            "mark": "bar",-            "width": 200,-            "title": "Car Histogram",             "encoding": {                 "color": {                     "field": "Origin",@@ -45,13 +46,13 @@                     "aggregate": "count",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "bar",+            "title": "Car Histogram",+            "width": 200         },         {-            "height": 200,-            "mark": "area",-            "width": 200,-            "title": "Car Streamgraph",             "encoding": {                 "color": {                     "field": "Origin",@@ -64,22 +65,21 @@                 },                 "y": {                     "aggregate": "count",-                    "type": "quantitative",                     "axis": null,-                    "stack": "center"+                    "stack": "center",+                    "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "area",+            "title": "Car Streamgraph",+            "width": 200         }     ],-    "config": {},-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },     "resolve": {         "scale": {             "color": "independent",             "shape": "independent"         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    } }
tests/specs/config/fontCfg.vl view
@@ -1,18 +1,11 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "font": "Comic Sans MS"     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -30,5 +23,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/headerlabels.vl view
@@ -1,40 +1,40 @@ {-    "transform": [-        {-            "filter": "datum.year === 2000"-        },-        {-            "as": "gender",-            "calculate": "datum.sex === 2 ? 'Female' : 'Male'"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "header": {             "labels": false         }     },-    "mark": "bar",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "gender",             "type": "nominal"         },-        "x": {-            "field": "age",-            "type": "ordinal"-        },         "column": {             "field": "gender",             "type": "nominal"         },+        "x": {+            "field": "age",+            "type": "ordinal"+        },         "y": {-            "field": "people",             "aggregate": "sum",+            "field": "people",             "type": "quantitative"         }-    }+    },+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year === 2000"+        },+        {+            "as": "gender",+            "calculate": "datum.sex === 2 ? 'Female' : 'Male'"+        }+    ] }
tests/specs/config/mark1.vl view
@@ -1,13 +1,15 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "mark": {+            "filled": false+        }+    },+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },     "hconcat": [         {-            "height": 200,-            "mark": {-                "size": 100,-                "type": "point"-            },-            "width": 200,-            "title": "Car Scatter",             "encoding": {                 "color": {                     "field": "Cylinders",@@ -25,13 +27,16 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": {+                "size": 100,+                "type": "point"+            },+            "title": "Car Scatter",+            "width": 200         },         {-            "height": 200,-            "mark": "bar",-            "width": 200,-            "title": "Car Histogram",             "encoding": {                 "color": {                     "field": "Origin",@@ -45,13 +50,13 @@                     "aggregate": "count",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "bar",+            "title": "Car Histogram",+            "width": 200         },         {-            "height": 200,-            "mark": "area",-            "width": 200,-            "title": "Car Streamgraph",             "encoding": {                 "color": {                     "field": "Origin",@@ -64,26 +69,21 @@                 },                 "y": {                     "aggregate": "count",-                    "type": "quantitative",                     "axis": null,-                    "stack": "center"+                    "stack": "center",+                    "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "area",+            "title": "Car Streamgraph",+            "width": 200         }     ],-    "config": {-        "mark": {-            "filled": false-        }-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },     "resolve": {         "scale": {             "color": "independent",             "shape": "independent"         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    } }
tests/specs/config/mark2.vl view
@@ -1,13 +1,28 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "area": {+            "filled": false+        },+        "bar": {+            "filled": true+        },+        "mark": {+            "fill": "black",+            "filled": true,+            "opacity": 1+        },+        "point": {+            "filled": true,+            "stroke": "white",+            "strokeOpacity": 0.2+        }+    },+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },     "hconcat": [         {-            "height": 200,-            "mark": {-                "size": 100,-                "type": "point"-            },-            "width": 200,-            "title": "Car Scatter",             "encoding": {                 "color": {                     "field": "Cylinders",@@ -25,13 +40,16 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": {+                "size": 100,+                "type": "point"+            },+            "title": "Car Scatter",+            "width": 200         },         {-            "height": 200,-            "mark": "bar",-            "width": 200,-            "title": "Car Histogram",             "encoding": {                 "color": {                     "field": "Origin",@@ -45,13 +63,13 @@                     "aggregate": "count",                     "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "bar",+            "title": "Car Histogram",+            "width": 200         },         {-            "height": 200,-            "mark": "area",-            "width": 200,-            "title": "Car Streamgraph",             "encoding": {                 "color": {                     "field": "Origin",@@ -64,39 +82,21 @@                 },                 "y": {                     "aggregate": "count",-                    "type": "quantitative",                     "axis": null,-                    "stack": "center"+                    "stack": "center",+                    "type": "quantitative"                 }-            }+            },+            "height": 200,+            "mark": "area",+            "title": "Car Streamgraph",+            "width": 200         }     ],-    "config": {-        "area": {-            "filled": false-        },-        "mark": {-            "opacity": 1,-            "fill": "black",-            "filled": true-        },-        "point": {-            "stroke": "white",-            "strokeOpacity": 0.2,-            "filled": true-        },-        "bar": {-            "filled": true-        }-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },     "resolve": {         "scale": {             "color": "independent",             "shape": "independent"         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    } }
tests/specs/config/padding.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "type": "fit"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingContent.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "contains": "content"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingNone.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "type": "none"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingPad.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "type": "pad"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingPadding.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "contains": "padding"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingResize.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "resize": true@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingx.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "type": "fit-x"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/paddingy.vl view
@@ -1,5 +1,5 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "autosize": {             "type": "fit-y"@@ -11,16 +11,9 @@             "top": 60         }     },-    "mark": {-        "size": 100,-        "type": "point"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Car Scatter",     "encoding": {         "color": {             "field": "Cylinders",@@ -38,5 +31,12 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "size": 100,+        "type": "point"+    },+    "title": "Car Scatter",+    "width": 200 }
tests/specs/config/titleCfg1.vl view
@@ -1,21 +1,8 @@ {-    "height": 200,-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": {-        "text": [-            "Car",-            "Scatter"-        ],-        "subtitle": [-            "A subtitle",-            "also over two lines"-        ]-    },     "encoding": {         "x": {             "field": "Horsepower",@@ -25,5 +12,18 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": "circle",+    "title": {+        "subtitle": [+            "A subtitle",+            "also over two lines"+        ],+        "text": [+            "Car",+            "Scatter"+        ]+    },+    "width": 200 }
tests/specs/config/titleCfg2.vl view
@@ -1,32 +1,8 @@ {-    "height": 200,-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": {-        "dx": -30,-        "subtitleFontWeight": 900,-        "subtitleFont": "serif",-        "subtitleFontSize": 10,-        "subtitleLineHeight": 18,-        "dy": 10,-        "text": [-            "Car",-            "Scatter"-        ],-        "subtitlePadding": 60,-        "anchor": "end",-        "subtitle": [-            "A subtitle",-            "also over two lines"-        ],-        "subtitleFontStyle": "italic",-        "subtitleColor": "red",-        "lineHeight": 20-    },     "encoding": {         "x": {             "field": "Horsepower",@@ -36,5 +12,29 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": "circle",+    "title": {+        "anchor": "end",+        "dx": -30,+        "dy": 10,+        "lineHeight": 20,+        "subtitle": [+            "A subtitle",+            "also over two lines"+        ],+        "subtitleColor": "red",+        "subtitleFont": "serif",+        "subtitleFontSize": 10,+        "subtitleFontStyle": "italic",+        "subtitleFontWeight": 900,+        "subtitleLineHeight": 18,+        "subtitlePadding": 60,+        "text": [+            "Car",+            "Scatter"+        ]+    },+    "width": 200 }
tests/specs/config/titleCfg3.vl view
@@ -1,36 +1,23 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "title": {+            "anchor": "end",             "dx": -30,-            "subtitleFontWeight": 900,+            "dy": 10,+            "lineHeight": 20,+            "subtitleColor": "red",             "subtitleFont": "serif",             "subtitleFontSize": 10,-            "subtitleLineHeight": 18,-            "dy": 10,-            "subtitlePadding": 60,-            "anchor": "end",             "subtitleFontStyle": "italic",-            "subtitleColor": "red",-            "lineHeight": 20+            "subtitleFontWeight": 900,+            "subtitleLineHeight": 18,+            "subtitlePadding": 60         }     },-    "mark": "circle",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": {-        "text": [-            "Car",-            "Scatter"-        ],-        "subtitle": [-            "A subtitle",-            "also over two lines"-        ]-    },     "encoding": {         "x": {             "field": "Horsepower",@@ -40,5 +27,18 @@             "field": "Miles_per_Gallon",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": "circle",+    "title": {+        "subtitle": [+            "A subtitle",+            "also over two lines"+        ],+        "text": [+            "Car",+            "Scatter"+        ]+    },+    "width": 200 }
tests/specs/config/vbTest.vl view
@@ -1,17 +1,30 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "background": "yellow",+    "config": {+        "legend": {+            "title": null+        },+        "style": {+            "mySecondStyle": {+                "fill": "black",+                "stroke": "blue"+            },+            "myStyle": {+                "fill": "red",+                "fillOpacity": 0.1,+                "strokeOpacity": 1+            }+        },+        "view": {+            "fill": "#feb"+        }+    },+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },     "hconcat": [         {-            "height": 200,-            "mark": {-                "size": 100,-                "type": "point"-            },-            "width": 200,-            "title": {-                "color": "brown",-                "text": "Car Scatter",-                "fontSize": 12-            },             "encoding": {                 "color": {                     "field": "Cylinders",@@ -29,25 +42,20 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }-        },-        {+            },             "height": 200,-            "mark": "bar",-            "width": 200,-            "view": {-                "cornerRadius": 18,-                "strokeWidth": 4,-                "strokeCap": "round",-                "strokeJoin": "bevel",-                "stroke": "red",-                "fill": "white",-                "strokeDash": [-                    10,-                    10-                ]+            "mark": {+                "size": 100,+                "type": "point"             },-            "title": "Car Histogram",+            "title": {+                "color": "brown",+                "fontSize": 12,+                "text": "Car Scatter"+            },+            "width": 200+        },+        {             "encoding": {                 "color": {                     "field": "Origin",@@ -61,19 +69,25 @@                     "aggregate": "count",                     "type": "quantitative"                 }-            }-        },-        {+            },             "height": 200,-            "mark": "area",-            "width": 200,+            "mark": "bar",+            "title": "Car Histogram",             "view": {-                "style": [-                    "myStyle",-                    "mySecondStyle"-                ]+                "cornerRadius": 18,+                "fill": "white",+                "stroke": "red",+                "strokeCap": "round",+                "strokeDash": [+                    10,+                    10+                ],+                "strokeJoin": "bevel",+                "strokeWidth": 4             },-            "title": "Car Streamgraph",+            "width": 200+        },+        {             "encoding": {                 "color": {                     "field": "Origin",@@ -86,41 +100,27 @@                 },                 "y": {                     "aggregate": "count",-                    "type": "quantitative",                     "axis": null,-                    "stack": "center"+                    "stack": "center",+                    "type": "quantitative"                 }-            }-        }-    ],-    "config": {-        "style": {-            "mySecondStyle": {-                "stroke": "blue",-                "fill": "black"             },-            "myStyle": {-                "fill": "red",-                "strokeOpacity": 1,-                "fillOpacity": 0.1-            }-        },-        "view": {-            "fill": "#feb"-        },-        "legend": {-            "title": null+            "height": 200,+            "mark": "area",+            "title": "Car Streamgraph",+            "view": {+                "style": [+                    "myStyle",+                    "mySecondStyle"+                ]+            },+            "width": 200         }-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },+    ],     "resolve": {         "scale": {             "color": "independent",             "shape": "independent"         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "background": "yellow"+    } }
tests/specs/data/annotate1.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -23,10 +24,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": "bar",             "encoding": {                 "x": {                     "field": "a",@@ -36,14 +35,15 @@                     "field": "b",                     "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {+            "data": null,             "mark": {                 "text": "Test",                 "type": "text"-            },-            "data": null+            }         }     ] }
tests/specs/data/argmin_spaces.vl view
@@ -1,55 +1,55 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "Place Rank": 1,+                "Fighter Name": "liukang",                 "Fighting Style": "tiger",-                "Fighter Name": "liukang"+                "Place Rank": 1             },             {-                "Place Rank": 10,+                "Fighter Name": "liukang",                 "Fighting Style": "crane",-                "Fighter Name": "liukang"+                "Place Rank": 10             },             {-                "Place Rank": 3,+                "Fighter Name": "liukang",                 "Fighting Style": "shaolin",-                "Fighter Name": "liukang"+                "Place Rank": 3             },             {-                "Place Rank": 6,+                "Fighter Name": "johnnycage",                 "Fighting Style": "tiger",-                "Fighter Name": "johnnycage"+                "Place Rank": 6             },             {-                "Place Rank": 5,+                "Fighter Name": "johnnycage",                 "Fighting Style": "crane",-                "Fighter Name": "johnnycage"+                "Place Rank": 5             },             {-                "Place Rank": 4,+                "Fighter Name": "johnnycage",                 "Fighting Style": "shaolin",-                "Fighter Name": "johnnycage"+                "Place Rank": 4             },             {-                "Place Rank": 8,+                "Fighter Name": "raided",                 "Fighting Style": "tiger",-                "Fighter Name": "raided"+                "Place Rank": 8             },             {-                "Place Rank": 12,+                "Fighter Name": "raiden",                 "Fighting Style": "crane",-                "Fighter Name": "raiden"+                "Place Rank": 12             },             {-                "Place Rank": 2,+                "Fighter Name": "raiden",                 "Fighting Style": "shaolin",-                "Fighter Name": "raiden"+                "Place Rank": 2             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "An example showing how to use argmin in tooltips with fields with spaces",     "encoding": {         "tooltip": [             {@@ -57,21 +57,21 @@                 "type": "nominal"             },             {-                "field": "Place Rank",                 "aggregate": "min",+                "field": "Place Rank",                 "type": "quantitative"             },             {-                "field": "Fighting Style",                 "aggregate": {                     "argmin": "Place Rank"                 },+                "field": "Fighting Style",                 "type": "nominal"             }         ],         "x": {-            "field": "Place Rank",             "aggregate": "min",+            "field": "Place Rank",             "type": "quantitative"         },         "y": {@@ -79,5 +79,5 @@             "type": "nominal"         }     },-    "description": "An example showing how to use argmin in tooltips with fields with spaces"+    "mark": "point" }
tests/specs/data/bin1.vl view
@@ -1,65 +1,65 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {+                "bin_end": 10,                 "bin_start": 8,-                "count": 7,-                "bin_end": 10+                "count": 7             },             {+                "bin_end": 12,                 "bin_start": 10,-                "count": 29,-                "bin_end": 12+                "count": 29             },             {+                "bin_end": 14,                 "bin_start": 12,-                "count": 71,-                "bin_end": 14+                "count": 71             },             {+                "bin_end": 16,                 "bin_start": 14,-                "count": 127,-                "bin_end": 16+                "count": 127             },             {+                "bin_end": 18,                 "bin_start": 16,-                "count": 94,-                "bin_end": 18+                "count": 94             },             {+                "bin_end": 20,                 "bin_start": 18,-                "count": 54,-                "bin_end": 20+                "count": 54             },             {+                "bin_end": 22,                 "bin_start": 20,-                "count": 17,-                "bin_end": 22+                "count": 17             },             {+                "bin_end": 24,                 "bin_start": 22,-                "count": 5,-                "bin_end": 24+                "count": 5             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {-        "x2": {-            "field": "bin_end"-        },         "x": {-            "field": "bin_start",-            "bin": "binned",-            "type": "quantitative",             "axis": {                 "tickMinStep": 2-            }+            },+            "bin": "binned",+            "field": "bin_start",+            "type": "quantitative"         },+        "x2": {+            "field": "bin_end"+        },         "y": {             "field": "count",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/bin2.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -94,17 +94,17 @@             }         ]     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",             "bin": true,+            "field": "x",             "type": "quantitative"         },         "y": {             "aggregate": "count",             "type": "quantitative"         }-    }+    },+    "mark": "bar",+    "width": 300 }
tests/specs/data/bin3.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -217,19 +217,19 @@             }         ]     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {-            "field": "x",             "bin": {                 "anchor": 0.5             },+            "field": "x",             "type": "quantitative"         },         "y": {             "aggregate": "count",             "type": "quantitative"         }-    }+    },+    "mark": "bar",+    "width": 300 }
tests/specs/data/data1.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -16,7 +16,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -26,5 +25,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data10.vl view
@@ -1,19 +1,8 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "name": "myData3"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x": {-            "field": "cat",-            "type": "nominal"-        },-        "y": {-            "field": "val",-            "type": "quantitative"-        }-    },     "datasets": {         "myData1": [             {@@ -57,5 +46,16 @@                 "val": 12             }         ]-    }+    },+    "encoding": {+        "x": {+            "field": "cat",+            "type": "nominal"+        },+        "y": {+            "field": "val",+            "type": "quantitative"+        }+    },+    "mark": "bar" }
tests/specs/data/data2.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -16,7 +16,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -26,5 +25,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data3.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -16,7 +16,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -26,5 +25,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data4.vl view
@@ -1,9 +1,8 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "data/dataTest.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -13,5 +12,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data5.vl view
@@ -1,9 +1,8 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "data/dataTest.tsv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -13,5 +12,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data6.vl view
@@ -1,13 +1,12 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "data/dataTest.csv",         "format": {-            "type": "dsv",-            "delimiter": ","-        }+            "delimiter": ",",+            "type": "dsv"+        },+        "url": "data/dataTest.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -17,5 +16,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data7.vl view
@@ -1,9 +1,8 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "data/dataTest.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -13,5 +12,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/data8.vl view
@@ -1,19 +1,8 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "name": "myData1"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x": {-            "field": "cat",-            "type": "nominal"-        },-        "y": {-            "field": "val",-            "type": "quantitative"-        }-    },     "datasets": {         "myData1": [             {@@ -57,5 +46,16 @@                 "val": 12             }         ]-    }+    },+    "encoding": {+        "x": {+            "field": "cat",+            "type": "nominal"+        },+        "y": {+            "field": "val",+            "type": "quantitative"+        }+    },+    "mark": "bar" }
tests/specs/data/data9.vl view
@@ -1,19 +1,8 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "name": "myData2"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x": {-            "field": "cat",-            "type": "nominal"-        },-        "y": {-            "field": "val",-            "type": "quantitative"-        }-    },     "datasets": {         "myData1": [             {@@ -57,5 +46,16 @@                 "val": 12             }         ]-    }+    },+    "encoding": {+        "x": {+            "field": "cat",+            "type": "nominal"+        },+        "y": {+            "field": "val",+            "type": "quantitative"+        }+    },+    "mark": "bar" }
tests/specs/data/domain1.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -23,7 +20,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -36,5 +32,9 @@             },             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/data/domain2.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -23,7 +20,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -40,5 +36,9 @@             },             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/data/domain3.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -23,7 +20,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -42,5 +38,9 @@             },             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/data/filter1.vl view
@@ -1,10 +1,5 @@ {-    "transform": [-        {-            "filter": "datum.a == 'A' || datum.a == 'C' || datum.a == 'E'"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -45,7 +40,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "a",@@ -55,5 +49,11 @@             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.a == 'A' || datum.a == 'C' || datum.a == 'E'"+        }+    ] }
tests/specs/data/filter2.vl view
@@ -1,29 +1,5 @@ {-    "transform": [-        {-            "filter": {-                "or": [-                    {-                        "or": [-                            {-                                "equal": "A",-                                "field": "a"-                            },-                            {-                                "equal": "C",-                                "field": "a"-                            }-                        ]-                    },-                    {-                        "equal": "E",-                        "field": "a"-                    }-                ]-            }-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -64,7 +40,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "a",@@ -74,5 +49,30 @@             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "bar",+    "transform": [+        {+            "filter": {+                "or": [+                    {+                        "or": [+                            {+                                "equal": "A",+                                "field": "a"+                            },+                            {+                                "equal": "C",+                                "field": "a"+                            }+                        ]+                    },+                    {+                        "equal": "E",+                        "field": "a"+                    }+                ]+            }+        }+    ] }
tests/specs/data/flatten1.vl view
@@ -1,45 +1,32 @@ {-    "transform": [-        {-            "as": [-                "quant",-                "cat"-            ],-            "flatten": [-                "foo",-                "bar"-            ]-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {+                "bar": [+                    "A",+                    "B"+                ],                 "foo": [                     1,                     2                 ],-                "key": "alpha",-                "bar": [-                    "A",-                    "B"-                ]+                "key": "alpha"             },             {+                "bar": [+                    "C",+                    "D"+                ],                 "foo": [                     3,                     4,                     5                 ],-                "key": "beta",-                "bar": [-                    "C",-                    "D"-                ]+                "key": "beta"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "key",@@ -53,5 +40,18 @@             "field": "cat",             "type": "nominal"         }-    }+    },+    "mark": "circle",+    "transform": [+        {+            "as": [+                "quant",+                "cat"+            ],+            "flatten": [+                "foo",+                "bar"+            ]+        }+    ] }
tests/specs/data/fold1.vl view
@@ -1,48 +1,48 @@ {-    "transform": [-        {-            "as": [-                "k",-                "v"-            ],-            "fold": [-                "gold",-                "silver"-            ]-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "silver": 20,                 "country": "USA",-                "gold": 10+                "gold": 10,+                "silver": 20             },             {-                "silver": 26,                 "country": "Canada",-                "gold": 7+                "gold": 7,+                "silver": 26             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "country",             "type": "nominal"         },-        "x": {-            "field": "country",-            "type": "nominal"-        },         "column": {             "field": "k",             "type": "nominal"         },+        "x": {+            "field": "country",+            "type": "nominal"+        },         "y": {             "field": "v",             "type": "quantitative"         }-    }+    },+    "mark": "bar",+    "transform": [+        {+            "as": [+                "k",+                "v"+            ],+            "fold": [+                "gold",+                "silver"+            ]+        }+    ] }
tests/specs/data/geodata1.vl view
@@ -1,24 +1,24 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": "geoshape",     "data": {-        "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json",         "format": {             "feature": "boroughs",             "type": "topojson"-        }+        },+        "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json"     },-    "width": 700,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "id",             "type": "nominal"         }-    }+    },+    "height": 500,+    "mark": "geoshape",+    "width": 700 }
tests/specs/data/geodata2.vl view
@@ -1,12 +1,15 @@ {-    "height": 400,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": "geoshape",     "data": {+        "format": {+            "property": "features",+            "type": "json"+        },         "values": {             "features": [                 {@@ -37,10 +40,10 @@                         ],                         "type": "Polygon"                     },-                    "type": "Feature",                     "properties": {                         "Region": "Southsville"-                    }+                    },+                    "type": "Feature"                 },                 {                     "geometry": {@@ -70,31 +73,28 @@                         ],                         "type": "Polygon"                     },-                    "type": "Feature",                     "properties": {                         "Region": "Northerton"-                    }+                    },+                    "type": "Feature"                 }             ],             "type": "FeatureCollection"-        },-        "format": {-            "property": "features",-            "type": "json"         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic"-    },     "encoding": {         "color": {             "field": "properties.Region",-            "type": "nominal",             "legend": {                 "title": null-            }+            },+            "type": "nominal"         }-    }+    },+    "height": 400,+    "mark": "geoshape",+    "projection": {+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/data/impute1.vl view
@@ -1,15 +1,5 @@ {-    "transform": [-        {-            "groupby": [-                "c"-            ],-            "value": 0,-            "key": "a",-            "impute": "b"-        }-    ],-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -49,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -66,5 +55,16 @@             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "line",+    "transform": [+        {+            "groupby": [+                "c"+            ],+            "impute": "b",+            "key": "a",+            "value": 0+        }+    ] }
tests/specs/data/impute2.vl view
@@ -1,19 +1,5 @@ {-    "transform": [-        {-            "groupby": [-                "c"-            ],-            "key": "a",-            "method": "mean",-            "frame": [-                -2,-                2-            ],-            "impute": "b"-        }-    ],-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -53,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -70,5 +55,20 @@             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "line",+    "transform": [+        {+            "frame": [+                -2,+                2+            ],+            "groupby": [+                "c"+            ],+            "impute": "b",+            "key": "a",+            "method": "mean"+        }+    ] }
tests/specs/data/impute3.vl view
@@ -1,20 +1,5 @@ {-    "transform": [-        {-            "groupby": [-                "c"-            ],-            "keyvals": {-                "start": 1,-                "step": 1,-                "stop": 4-            },-            "value": 100,-            "key": "a",-            "impute": "b"-        }-    ],-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -54,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -71,5 +55,21 @@             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "line",+    "transform": [+        {+            "groupby": [+                "c"+            ],+            "impute": "b",+            "key": "a",+            "keyvals": {+                "start": 1,+                "step": 1,+                "stop": 4+            },+            "value": 100+        }+    ] }
tests/specs/data/impute4.vl view
@@ -1,5 +1,5 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -39,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -59,5 +58,6 @@             },             "type": "quantitative"         }-    }+    },+    "mark": "line" }
tests/specs/data/impute5.vl view
@@ -1,5 +1,5 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -39,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -59,5 +58,6 @@             },             "type": "quantitative"         }-    }+    },+    "mark": "line" }
tests/specs/data/impute6.vl view
@@ -1,5 +1,5 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -39,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -55,13 +54,14 @@         "y": {             "field": "b",             "impute": {-                "method": "mean",                 "frame": [                     -2,                     2-                ]+                ],+                "method": "mean"             },             "type": "quantitative"         }-    }+    },+    "mark": "line" }
tests/specs/data/impute7.vl view
@@ -1,5 +1,5 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -39,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -62,5 +61,6 @@             },             "type": "quantitative"         }-    }+    },+    "mark": "line" }
tests/specs/data/impute8.vl view
@@ -1,5 +1,5 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -39,7 +39,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "c",@@ -64,5 +63,6 @@             },             "type": "quantitative"         }-    }+    },+    "mark": "line" }
tests/specs/data/namedData1.vl view
@@ -1,6 +1,7 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {+        "name": "source",         "values": [             {                 "a": "A",@@ -38,10 +39,8 @@                 "a": "I",                 "b": 52             }-        ],-        "name": "source"+        ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "a",@@ -51,5 +50,6 @@             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/namedData2.vl view
@@ -1,10 +1,9 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "data/dataTest.tsv",-        "name": "myName"+        "name": "myName",+        "url": "data/dataTest.tsv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -14,5 +13,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/namedData3.vl view
@@ -1,10 +1,9 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "values": [],-        "name": "source"+        "name": "source",+        "values": []     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -14,5 +13,6 @@             "field": "val",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/data/null1.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -35,7 +32,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "x",@@ -45,5 +41,9 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "point": true,+        "type": "line"     } }
tests/specs/data/pivot1.vl view
@@ -1,39 +1,30 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "repeat": [         "gold",         "silver"     ],     "spec": {-        "transform": [-            {-                "groupby": [-                    "country"-                ],-                "value": "count",-                "pivot": "medalType"-            }-        ],-        "mark": "bar",         "data": {             "values": [                 {-                    "country": "USA",                     "count": 10,+                    "country": "USA",                     "medalType": "gold"                 },                 {-                    "country": "USA",                     "count": 20,+                    "country": "USA",                     "medalType": "silver"                 },                 {-                    "country": "Canada",                     "count": 7,+                    "country": "Canada",                     "medalType": "gold"                 },                 {-                    "country": "Canada",                     "count": 26,+                    "country": "Canada",                     "medalType": "silver"                 }             ]@@ -53,7 +44,16 @@                 },                 "type": "quantitative"             }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+        },+        "mark": "bar",+        "transform": [+            {+                "groupby": [+                    "country"+                ],+                "pivot": "medalType",+                "value": "count"+            }+        ]+    } }
tests/specs/data/pivotDocs.vl view
@@ -1,49 +1,39 @@ {-    "transform": [-        {-            "groupby": [-                "city"-            ],-            "value": "temperature",-            "pivot": "year"-        }-    ],-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {+                "city": "Bristol",                 "temperature": 12,-                "year": 2017,-                "city": "Bristol"+                "year": 2017             },             {+                "city": "Bristol",                 "temperature": 14,-                "year": 2018,-                "city": "Bristol"+                "year": 2018             },             {+                "city": "Sheffield",                 "temperature": 11,-                "year": 2017,-                "city": "Sheffield"+                "year": 2017             },             {+                "city": "Sheffield",                 "temperature": 13,-                "year": 2018,-                "city": "Sheffield"+                "year": 2018             },             {+                "city": "Glasgow",                 "temperature": 7,-                "year": 2017,-                "city": "Glasgow"+                "year": 2017             },             {+                "city": "Glasgow",                 "temperature": 10,-                "year": 2018,-                "city": "Glasgow"+                "year": 2018             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "2017",@@ -53,5 +43,15 @@             "field": "city",             "type": "nominal"         }-    }+    },+    "mark": "circle",+    "transform": [+        {+            "groupby": [+                "city"+            ],+            "pivot": "year",+            "value": "temperature"+        }+    ] }
tests/specs/data/sample1.vl view
@@ -1,7 +1,10 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },     "hconcat": [         {-            "mark": "point",             "encoding": {                 "x": {                     "field": "Horsepower",@@ -11,15 +14,10 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "mark": "point"         },         {-            "transform": [-                {-                    "sample": 200-                }-            ],-            "mark": "point",             "encoding": {                 "x": {                     "field": "Horsepower",@@ -29,11 +27,13 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "mark": "point",+            "transform": [+                {+                    "sample": 200+                }+            ]         }-    ],-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/data/sequence1.vl view
@@ -1,11 +1,5 @@ {-    "transform": [-        {-            "as": "v",-            "calculate": "sin(datum.data)"-        }-    ],-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "start": 0,@@ -13,7 +7,6 @@             "stop": 12.7         }     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "data",@@ -23,5 +16,12 @@             "field": "v",             "type": "quantitative"         }-    }+    },+    "mark": "line",+    "transform": [+        {+            "as": "v",+            "calculate": "sin(datum.data)"+        }+    ] }
tests/specs/data/sequence2.vl view
@@ -1,11 +1,5 @@ {-    "transform": [-        {-            "as": "v",-            "calculate": "sin(datum.u)"-        }-    ],-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "u",@@ -14,7 +8,6 @@             "stop": 12.7         }     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "u",@@ -24,5 +17,12 @@             "field": "v",             "type": "quantitative"         }-    }+    },+    "mark": "line",+    "transform": [+        {+            "as": "v",+            "calculate": "sin(datum.u)"+        }+    ] }
tests/specs/fillstroke/combined1.vl view
@@ -1,49 +1,43 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",             "type": "nominal"         },+        "fill": {},         "size": {             "value": 2000         },         "stroke": {},-        "fill": {},         "x": {             "field": "x",             "type": "quantitative"@@ -52,5 +46,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/combined2.vl view
@@ -1,44 +1,41 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",             "type": "nominal"         },+        "fill": {+            "value": "red"+        },         "size": {             "value": 2000         },@@ -46,9 +43,6 @@             "field": "y",             "type": "ordinal"         },-        "fill": {-            "value": "red"-        },         "x": {             "field": "x",             "type": "quantitative"@@ -57,5 +51,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/combined3.vl view
@@ -1,54 +1,48 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",             "type": "nominal"         },+        "fill": {+            "field": "y",+            "type": "ordinal"+        },         "size": {             "value": 2000         },         "stroke": {             "value": "red"         },-        "fill": {-            "field": "y",-            "type": "ordinal"-        },         "x": {             "field": "x",             "type": "quantitative"@@ -57,5 +51,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/default.vl view
@@ -1,39 +1,33 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",@@ -50,5 +44,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/fill1.vl view
@@ -1,48 +1,42 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",             "type": "nominal"         },+        "fill": {},         "size": {             "value": 2000         },-        "fill": {},         "x": {             "field": "x",             "type": "quantitative"@@ -51,5 +45,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/fill2.vl view
@@ -1,51 +1,45 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",             "type": "nominal"         },-        "size": {-            "value": 2000-        },         "fill": {             "field": "y",             "type": "ordinal"         },+        "size": {+            "value": 2000+        },         "x": {             "field": "x",             "type": "quantitative"@@ -54,5 +48,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/fill3.vl view
@@ -1,50 +1,44 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",             "type": "nominal"         },-        "size": {-            "value": 2000-        },         "fill": {             "value": "red"         },+        "size": {+            "value": 2000+        },         "x": {             "field": "x",             "type": "quantitative"@@ -53,5 +47,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/fillopacity.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -12,22 +12,22 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {-        "x": {-            "field": "a",-            "type": "ordinal",-            "axis": {-                "labelAngle": 0-            }-        },         "fillOpacity": {             "field": "b",             "type": "quantitative"         },+        "x": {+            "axis": {+                "labelAngle": 0+            },+            "field": "a",+            "type": "ordinal"+        },         "y": {             "field": "b",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/fillstroke/geo1.vl view
@@ -1,6 +1,5 @@ {-    "height": 300,-    "mark": "geoshape",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": {             "features": [@@ -58,6 +57,7 @@             "type": "FeatureCollection"         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    "height": 300,+    "mark": "geoshape",+    "width": 300 }
tests/specs/fillstroke/geo2.vl view
@@ -1,6 +1,5 @@ {-    "height": 300,-    "mark": "geoshape",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": {             "features": [@@ -58,12 +57,13 @@             "type": "FeatureCollection"         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "features.geometry.type",             "type": "nominal"         }-    }+    },+    "height": 300,+    "mark": "geoshape",+    "width": 300 }
tests/specs/fillstroke/gradient1.vl view
@@ -1,50 +1,25 @@ {-    "mark": {-        "color": {-            "x2": 1,-            "y1": 0,-            "stops": [-                {-                    "color": "red",-                    "offset": 0-                },-                {-                    "color": "orange",-                    "offset": 0.4-                },-                {-                    "color": "blue",-                    "offset": 1-                }-            ],-            "gradient": "linear",-            "y2": 1,-            "x1": 1-        },-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "value": 10,-                "cat": "a"+                "cat": "a",+                "value": 10             },             {-                "value": 5,-                "cat": "b"+                "cat": "b",+                "value": 5             },             {-                "value": 20,-                "cat": "c"+                "cat": "c",+                "value": 20             },             {-                "value": 8,-                "cat": "d"+                "cat": "d",+                "value": 8             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -54,5 +29,30 @@             "field": "value",             "type": "quantitative"         }-    }+    },+    "mark": {+        "color": {+            "gradient": "linear",+            "stops": [+                {+                    "color": "red",+                    "offset": 0+                },+                {+                    "color": "orange",+                    "offset": 0.4+                },+                {+                    "color": "blue",+                    "offset": 1+                }+            ],+            "x1": 1,+            "x2": 1,+            "y1": 0,+            "y2": 1+        },+        "type": "bar"+    },+    "width": 200 }
tests/specs/fillstroke/gradient2.vl view
@@ -1,46 +1,25 @@ {-    "mark": {-        "color": {-            "x2": 1,-            "y1": 1,-            "stops": [-                {-                    "color": "red",-                    "offset": 0-                },-                {-                    "color": "blue",-                    "offset": 1-                }-            ],-            "gradient": "linear",-            "y2": 1,-            "x1": 0-        },-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "value": 10,-                "cat": "a"+                "cat": "a",+                "value": 10             },             {-                "value": 5,-                "cat": "b"+                "cat": "b",+                "value": 5             },             {-                "value": 20,-                "cat": "c"+                "cat": "c",+                "value": 20             },             {-                "value": 8,-                "cat": "d"+                "cat": "d",+                "value": 8             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -50,5 +29,26 @@             "field": "value",             "type": "quantitative"         }-    }+    },+    "mark": {+        "color": {+            "gradient": "linear",+            "stops": [+                {+                    "color": "red",+                    "offset": 0+                },+                {+                    "color": "blue",+                    "offset": 1+                }+            ],+            "x1": 0,+            "x2": 1,+            "y1": 1,+            "y2": 1+        },+        "type": "bar"+    },+    "width": 200 }
tests/specs/fillstroke/gradient3.vl view
@@ -1,46 +1,25 @@ {-    "mark": {-        "color": {-            "x2": 1,-            "y1": 0,-            "stops": [-                {-                    "color": "blue",-                    "offset": 0-                },-                {-                    "color": "red",-                    "offset": 1-                }-            ],-            "gradient": "linear",-            "y2": 1,-            "x1": 0-        },-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "value": 10,-                "cat": "a"+                "cat": "a",+                "value": 10             },             {-                "value": 5,-                "cat": "b"+                "cat": "b",+                "value": 5             },             {-                "value": 20,-                "cat": "c"+                "cat": "c",+                "value": 20             },             {-                "value": 8,-                "cat": "d"+                "cat": "d",+                "value": 8             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -50,5 +29,26 @@             "field": "value",             "type": "quantitative"         }-    }+    },+    "mark": {+        "color": {+            "gradient": "linear",+            "stops": [+                {+                    "color": "blue",+                    "offset": 0+                },+                {+                    "color": "red",+                    "offset": 1+                }+            ],+            "x1": 0,+            "x2": 1,+            "y1": 0,+            "y2": 1+        },+        "type": "bar"+    },+    "width": 200 }
tests/specs/fillstroke/gradientr1.vl view
@@ -1,47 +1,25 @@ {-    "mark": {-        "color": {-            "stops": [-                {-                    "color": "red",-                    "offset": 0-                },-                {-                    "color": "white",-                    "offset": 0.5-                },-                {-                    "color": "blue",-                    "offset": 1-                }-            ],-            "gradient": "radial"-        },-        "size": 1000,-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "value": 10,-                "cat": "a"+                "cat": "a",+                "value": 10             },             {-                "value": 5,-                "cat": "b"+                "cat": "b",+                "value": 5             },             {-                "value": 20,-                "cat": "c"+                "cat": "c",+                "value": 20             },             {-                "value": 8,-                "cat": "d"+                "cat": "d",+                "value": 8             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -51,5 +29,27 @@             "field": "value",             "type": "quantitative"         }-    }+    },+    "mark": {+        "color": {+            "gradient": "radial",+            "stops": [+                {+                    "color": "red",+                    "offset": 0+                },+                {+                    "color": "white",+                    "offset": 0.5+                },+                {+                    "color": "blue",+                    "offset": 1+                }+            ]+        },+        "size": 1000,+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/gradientr2.vl view
@@ -1,51 +1,25 @@ {-    "mark": {-        "color": {-            "x2": 0.5,-            "y1": 0.5,-            "stops": [-                {-                    "color": "red",-                    "offset": 0-                },-                {-                    "color": "white",-                    "offset": 0.5-                },-                {-                    "color": "blue",-                    "offset": 1-                }-            ],-            "gradient": "radial",-            "y2": 0.5,-            "x1": 0.5-        },-        "size": 1000,-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "value": 10,-                "cat": "a"+                "cat": "a",+                "value": 10             },             {-                "value": 5,-                "cat": "b"+                "cat": "b",+                "value": 5             },             {-                "value": 20,-                "cat": "c"+                "cat": "c",+                "value": 20             },             {-                "value": 8,-                "cat": "d"+                "cat": "d",+                "value": 8             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -55,5 +29,31 @@             "field": "value",             "type": "quantitative"         }-    }+    },+    "mark": {+        "color": {+            "gradient": "radial",+            "stops": [+                {+                    "color": "red",+                    "offset": 0+                },+                {+                    "color": "white",+                    "offset": 0.5+                },+                {+                    "color": "blue",+                    "offset": 1+                }+            ],+            "x1": 0.5,+            "x2": 0.5,+            "y1": 0.5,+            "y2": 0.5+        },+        "size": 1000,+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/gradientr3.vl view
@@ -1,53 +1,25 @@ {-    "mark": {-        "color": {-            "x2": 0.8,-            "y1": 0.7,-            "r2": 0.4,-            "stops": [-                {-                    "color": "red",-                    "offset": 0-                },-                {-                    "color": "white",-                    "offset": 0.5-                },-                {-                    "color": "blue",-                    "offset": 1-                }-            ],-            "gradient": "radial",-            "y2": 0.3,-            "r1": 0.2,-            "x1": 0.2-        },-        "size": 1000,-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "value": 10,-                "cat": "a"+                "cat": "a",+                "value": 10             },             {-                "value": 5,-                "cat": "b"+                "cat": "b",+                "value": 5             },             {-                "value": 20,-                "cat": "c"+                "cat": "c",+                "value": 20             },             {-                "value": 8,-                "cat": "d"+                "cat": "d",+                "value": 8             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "cat",@@ -57,5 +29,33 @@             "field": "value",             "type": "quantitative"         }-    }+    },+    "mark": {+        "color": {+            "gradient": "radial",+            "r1": 0.2,+            "r2": 0.4,+            "stops": [+                {+                    "color": "red",+                    "offset": 0+                },+                {+                    "color": "white",+                    "offset": 0.5+                },+                {+                    "color": "blue",+                    "offset": 1+                }+            ],+            "x1": 0.2,+            "x2": 0.8,+            "y1": 0.7,+            "y2": 0.3+        },+        "size": 1000,+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/hrounded.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "cornerRadiusEnd": 4,-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -43,7 +40,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "b",@@ -53,5 +49,9 @@             "field": "a",             "type": "ordinal"         }+    },+    "mark": {+        "cornerRadiusEnd": 4,+        "type": "bar"     } }
tests/specs/fillstroke/stroke1.vl view
@@ -1,39 +1,33 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",@@ -51,5 +45,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/stroke2.vl view
@@ -1,39 +1,33 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",@@ -54,5 +48,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/stroke3.vl view
@@ -1,39 +1,33 @@ {-    "height": 200,-    "mark": {-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "cat": "a",-                "x": 10,                 "val": 1,+                "x": 10,                 "y": 1             },             {                 "cat": "b",-                "x": 20,                 "val": 2,+                "x": 20,                 "y": 2             },             {                 "cat": "c",-                "x": 30,                 "val": 3,+                "x": 30,                 "y": 3             },             {                 "cat": "d",-                "x": 36,                 "val": 4,+                "x": 36,                 "y": 4             }         ]     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "cat",@@ -53,5 +47,11 @@             "field": "y",             "type": "quantitative"         }-    }+    },+    "height": 200,+    "mark": {+        "stroke": "black",+        "type": "circle"+    },+    "width": 200 }
tests/specs/fillstroke/strokedash1.vl view
@@ -1,14 +1,8 @@ {-    "mark": {-        "strokeWidth": 1,-        "opacity": 0.6,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "width": 350,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "strokeDash": {             "field": "symbol",@@ -22,5 +16,11 @@             "field": "price",             "type": "quantitative"         }-    }+    },+    "mark": {+        "opacity": 0.6,+        "strokeWidth": 1,+        "type": "line"+    },+    "width": 350 }
tests/specs/fillstroke/strokedash2.vl view
@@ -1,14 +1,8 @@ {-    "mark": {-        "strokeWidth": 1,-        "opacity": 0.6,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "width": 350,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "strokeDash": {             "field": "symbol",@@ -53,5 +47,11 @@             "field": "price",             "type": "quantitative"         }-    }+    },+    "mark": {+        "opacity": 0.6,+        "strokeWidth": 1,+        "type": "line"+    },+    "width": 350 }
tests/specs/fillstroke/strokedash3.vl view
@@ -1,13 +1,54 @@ {-    "config": {-        "line": {-            "strokeWidth": 1,-            "color": "orange",-            "opacity": 0.6+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "concat": [+        {+            "encoding": {+                "strokeDash": {+                    "field": "cat",+                    "type": "nominal"+                },+                "x": {+                    "field": "x",+                    "type": "quantitative"+                },+                "y": {+                    "field": "y",+                    "type": "quantitative"+                }+            },+            "mark": "line",+            "title": "Nominal",+            "width": 200         },+        {+            "encoding": {+                "strokeDash": {+                    "field": "cat",+                    "type": "ordinal"+                },+                "x": {+                    "field": "x",+                    "type": "quantitative"+                },+                "y": {+                    "field": "y",+                    "type": "quantitative"+                }+            },+            "mark": "line",+            "title": "Ordinal",+            "width": 200+        }+    ],+    "config": {         "axis": {             "grid": false,             "title": null+        },+        "line": {+            "color": "orange",+            "opacity": 0.6,+            "strokeWidth": 1         }     },     "data": {@@ -118,46 +159,5 @@         "scale": {             "strokeDash": "independent"         }-    },-    "concat": [-        {-            "mark": "line",-            "width": 200,-            "title": "Nominal",-            "encoding": {-                "strokeDash": {-                    "field": "cat",-                    "type": "nominal"-                },-                "x": {-                    "field": "x",-                    "type": "quantitative"-                },-                "y": {-                    "field": "y",-                    "type": "quantitative"-                }-            }-        },-        {-            "mark": "line",-            "width": 200,-            "title": "Ordinal",-            "encoding": {-                "strokeDash": {-                    "field": "cat",-                    "type": "ordinal"-                },-                "x": {-                    "field": "x",-                    "type": "quantitative"-                },-                "y": {-                    "field": "y",-                    "type": "quantitative"-                }-            }-        }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    } }
tests/specs/fillstroke/strokedash4.vl view
@@ -1,129 +1,7 @@ {-    "config": {-        "line": {-            "strokeWidth": 1,-            "color": "orange",-            "opacity": 0.6-        },-        "axis": {-            "grid": false,-            "title": null-        }-    },-    "data": {-        "values": [-            {-                "cat": 1,-                "x": 0,-                "y": 100-            },-            {-                "cat": 1,-                "x": 1,-                "y": 100-            },-            {-                "cat": 2,-                "x": 0,-                "y": 90-            },-            {-                "cat": 2,-                "x": 1,-                "y": 90-            },-            {-                "cat": 3,-                "x": 0,-                "y": 80-            },-            {-                "cat": 3,-                "x": 1,-                "y": 80-            },-            {-                "cat": 4,-                "x": 0,-                "y": 70-            },-            {-                "cat": 4,-                "x": 1,-                "y": 70-            },-            {-                "cat": 5,-                "x": 0,-                "y": 60-            },-            {-                "cat": 5,-                "x": 1,-                "y": 60-            },-            {-                "cat": 6,-                "x": 0,-                "y": 50-            },-            {-                "cat": 6,-                "x": 1,-                "y": 50-            },-            {-                "cat": 7,-                "x": 0,-                "y": 40-            },-            {-                "cat": 7,-                "x": 1,-                "y": 40-            },-            {-                "cat": 8,-                "x": 0,-                "y": 30-            },-            {-                "cat": 8,-                "x": 1,-                "y": 30-            },-            {-                "cat": 9,-                "x": 0,-                "y": 20-            },-            {-                "cat": 9,-                "x": 1,-                "y": 20-            },-            {-                "cat": 10,-                "x": 0,-                "y": 10-            },-            {-                "cat": 10,-                "x": 1,-                "y": 10-            }-        ]-    },-    "resolve": {-        "scale": {-            "strokeDash": "independent"-        }-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "concat": [         {-            "mark": "line",-            "width": 200,-            "title": "Nominal",             "encoding": {                 "strokeDash": {                     "field": "cat",@@ -195,12 +73,12 @@                     "field": "y",                     "type": "quantitative"                 }-            }+            },+            "mark": "line",+            "title": "Nominal",+            "width": 200         },         {-            "mark": "line",-            "width": 200,-            "title": "Ordinal",             "encoding": {                 "strokeDash": {                     "field": "cat",@@ -272,8 +150,130 @@                     "field": "y",                     "type": "quantitative"                 }-            }+            },+            "mark": "line",+            "title": "Ordinal",+            "width": 200         }     ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    "config": {+        "axis": {+            "grid": false,+            "title": null+        },+        "line": {+            "color": "orange",+            "opacity": 0.6,+            "strokeWidth": 1+        }+    },+    "data": {+        "values": [+            {+                "cat": 1,+                "x": 0,+                "y": 100+            },+            {+                "cat": 1,+                "x": 1,+                "y": 100+            },+            {+                "cat": 2,+                "x": 0,+                "y": 90+            },+            {+                "cat": 2,+                "x": 1,+                "y": 90+            },+            {+                "cat": 3,+                "x": 0,+                "y": 80+            },+            {+                "cat": 3,+                "x": 1,+                "y": 80+            },+            {+                "cat": 4,+                "x": 0,+                "y": 70+            },+            {+                "cat": 4,+                "x": 1,+                "y": 70+            },+            {+                "cat": 5,+                "x": 0,+                "y": 60+            },+            {+                "cat": 5,+                "x": 1,+                "y": 60+            },+            {+                "cat": 6,+                "x": 0,+                "y": 50+            },+            {+                "cat": 6,+                "x": 1,+                "y": 50+            },+            {+                "cat": 7,+                "x": 0,+                "y": 40+            },+            {+                "cat": 7,+                "x": 1,+                "y": 40+            },+            {+                "cat": 8,+                "x": 0,+                "y": 30+            },+            {+                "cat": 8,+                "x": 1,+                "y": 30+            },+            {+                "cat": 9,+                "x": 0,+                "y": 20+            },+            {+                "cat": 9,+                "x": 1,+                "y": 20+            },+            {+                "cat": 10,+                "x": 0,+                "y": 10+            },+            {+                "cat": 10,+                "x": 1,+                "y": 10+            }+        ]+    },+    "resolve": {+        "scale": {+            "strokeDash": "independent"+        }+    } }
tests/specs/fillstroke/strokedash5.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "as": "y0",-            "calculate": "abs(sin(datum.x0+random()))"-        },-        {-            "as": "x",-            "calculate": "datum.x0 %10"-        },-        {-            "as": "cat",-            "calculate": "floor(datum.x0 / 10)"-        },-        {-            "as": "y",-            "calculate": "datum.y0 + datum.cat"-        }-    ],-    "height": 300,-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "x0",@@ -27,9 +8,6 @@             "stop": 100         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Dash scale 0.2",     "encoding": {         "strokeDash": {             "field": "cat",@@ -94,18 +72,40 @@             "type": "ordinal"         },         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "line",+    "title": "Dash scale 0.2",+    "transform": [+        {+            "as": "y0",+            "calculate": "abs(sin(datum.x0+random()))"+        },+        {+            "as": "x",+            "calculate": "datum.x0 %10"+        },+        {+            "as": "cat",+            "calculate": "floor(datum.x0 / 10)"+        },+        {+            "as": "y",+            "calculate": "datum.y0 + datum.cat"+        }+    ],+    "width": 300 }
tests/specs/fillstroke/strokedash6.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "as": "y0",-            "calculate": "abs(sin(datum.x0+random()))"-        },-        {-            "as": "x",-            "calculate": "datum.x0 %10"-        },-        {-            "as": "cat",-            "calculate": "floor(datum.x0 / 10)"-        },-        {-            "as": "y",-            "calculate": "datum.y0 + datum.cat"-        }-    ],-    "height": 300,-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "x0",@@ -27,9 +8,6 @@             "stop": 100         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Dash scale 0.5",     "encoding": {         "strokeDash": {             "field": "cat",@@ -94,18 +72,40 @@             "type": "ordinal"         },         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "line",+    "title": "Dash scale 0.5",+    "transform": [+        {+            "as": "y0",+            "calculate": "abs(sin(datum.x0+random()))"+        },+        {+            "as": "x",+            "calculate": "datum.x0 %10"+        },+        {+            "as": "cat",+            "calculate": "floor(datum.x0 / 10)"+        },+        {+            "as": "y",+            "calculate": "datum.y0 + datum.cat"+        }+    ],+    "width": 300 }
tests/specs/fillstroke/strokedash7.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "as": "y0",-            "calculate": "abs(sin(datum.x0+random()))"-        },-        {-            "as": "x",-            "calculate": "datum.x0 %10"-        },-        {-            "as": "cat",-            "calculate": "floor(datum.x0 / 10)"-        },-        {-            "as": "y",-            "calculate": "datum.y0 + datum.cat"-        }-    ],-    "height": 300,-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "x0",@@ -27,9 +8,6 @@             "stop": 100         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Dash scale 1.0",     "encoding": {         "strokeDash": {             "field": "cat",@@ -94,18 +72,40 @@             "type": "ordinal"         },         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "line",+    "title": "Dash scale 1.0",+    "transform": [+        {+            "as": "y0",+            "calculate": "abs(sin(datum.x0+random()))"+        },+        {+            "as": "x",+            "calculate": "datum.x0 %10"+        },+        {+            "as": "cat",+            "calculate": "floor(datum.x0 / 10)"+        },+        {+            "as": "y",+            "calculate": "datum.y0 + datum.cat"+        }+    ],+    "width": 300 }
tests/specs/fillstroke/strokedash8.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "as": "y0",-            "calculate": "abs(sin(datum.x0+random()))"-        },-        {-            "as": "x",-            "calculate": "datum.x0 %10"-        },-        {-            "as": "cat",-            "calculate": "floor(datum.x0 / 10)"-        },-        {-            "as": "y",-            "calculate": "datum.y0 + datum.cat"-        }-    ],-    "height": 300,-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "x0",@@ -27,9 +8,6 @@             "stop": 100         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Dash scale 2.0",     "encoding": {         "strokeDash": {             "field": "cat",@@ -94,18 +72,40 @@             "type": "ordinal"         },         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "line",+    "title": "Dash scale 2.0",+    "transform": [+        {+            "as": "y0",+            "calculate": "abs(sin(datum.x0+random()))"+        },+        {+            "as": "x",+            "calculate": "datum.x0 %10"+        },+        {+            "as": "cat",+            "calculate": "floor(datum.x0 / 10)"+        },+        {+            "as": "y",+            "calculate": "datum.y0 + datum.cat"+        }+    ],+    "width": 300 }
tests/specs/fillstroke/strokedash9.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "as": "y0",-            "calculate": "abs(sin(datum.x0+random()))"-        },-        {-            "as": "x",-            "calculate": "datum.x0 %10"-        },-        {-            "as": "cat",-            "calculate": "floor(datum.x0 / 10)"-        },-        {-            "as": "y",-            "calculate": "datum.y0 + datum.cat"-        }-    ],-    "height": 300,-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "x0",@@ -27,9 +8,6 @@             "stop": 100         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Dash scale 4.0",     "encoding": {         "strokeDash": {             "field": "cat",@@ -94,18 +72,40 @@             "type": "ordinal"         },         "x": {-            "field": "x",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "x",+            "type": "quantitative"         },         "y": {-            "field": "y",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "field": "y",+            "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "line",+    "title": "Dash scale 4.0",+    "transform": [+        {+            "as": "y0",+            "calculate": "abs(sin(datum.x0+random()))"+        },+        {+            "as": "x",+            "calculate": "datum.x0 %10"+        },+        {+            "as": "cat",+            "calculate": "floor(datum.x0 / 10)"+        },+        {+            "as": "y",+            "calculate": "datum.y0 + datum.cat"+        }+    ],+    "width": 300 }
tests/specs/fillstroke/vrounded.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "cornerRadiusEnd": 4,-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -43,7 +40,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "x": {             "field": "a",@@ -53,5 +49,9 @@             "field": "b",             "type": "quantitative"         }+    },+    "mark": {+        "cornerRadiusEnd": 4,+        "type": "bar"     } }
tests/specs/gallery/advanced/advanced1.vl view
@@ -1,64 +1,64 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "sum",-                    "as": "TotalTime",-                    "field": "Time"-                }-            ],-            "frame": [-                null,-                null-            ]-        },-        {-            "as": "PercentOfTotal",-            "calculate": "datum.Time/datum.TotalTime * 100"-        }-    ],-    "height": {-        "step": 12-    },-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "Time": 8,-                "Activity": "Sleeping"+                "Activity": "Sleeping",+                "Time": 8             },             {-                "Time": 2,-                "Activity": "Eating"+                "Activity": "Eating",+                "Time": 2             },             {-                "Time": 4,-                "Activity": "TV"+                "Activity": "TV",+                "Time": 4             },             {-                "Time": 8,-                "Activity": "Work"+                "Activity": "Work",+                "Time": 8             },             {-                "Time": 2,-                "Activity": "Exercise"+                "Activity": "Exercise",+                "Time": 2             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Calculation of percentage of total",     "encoding": {         "x": {-            "field": "PercentOfTotal",-            "type": "quantitative",             "axis": {                 "title": "% of total time"-            }+            },+            "field": "PercentOfTotal",+            "type": "quantitative"         },         "y": {             "field": "Activity",             "type": "nominal"         }     },-    "description": "Calculation of percentage of total"+    "height": {+        "step": 12+    },+    "mark": "bar",+    "transform": [+        {+            "frame": [+                null,+                null+            ],+            "window": [+                {+                    "as": "TotalTime",+                    "field": "Time",+                    "op": "sum"+                }+            ]+        },+        {+            "as": "PercentOfTotal",+            "calculate": "datum.Time/datum.TotalTime * 100"+        }+    ] }
tests/specs/gallery/advanced/advanced2.vl view
@@ -1,59 +1,59 @@ {-    "transform": [-        {-            "filter": "isValid(datum.IMDB_Rating)"-        },-        {-            "window": [-                {-                    "op": "mean",-                    "as": "AverageRating",-                    "field": "IMDB_Rating"-                }-            ],-            "frame": [-                null,-                null-            ]-        },-        {-            "filter": "(datum.IMDB_Rating - datum.AverageRating) > 2.5"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Calculation of difference from average",     "layer": [         {-            "mark": "bar",             "encoding": {                 "x": {-                    "field": "IMDB_Rating",-                    "type": "quantitative",                     "axis": {                         "title": "IMDB Rating"-                    }+                    },+                    "field": "IMDB_Rating",+                    "type": "quantitative"                 },                 "y": {                     "field": "Title",                     "type": "ordinal"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": {-                "color": "red",-                "type": "rule"-            },             "encoding": {                 "x": {-                    "field": "AverageRating",                     "aggregate": "mean",+                    "field": "AverageRating",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "type": "rule"             }         }     ],-    "description": "Calculation of difference from average"+    "transform": [+        {+            "filter": "isValid(datum.IMDB_Rating)"+        },+        {+            "frame": [+                null,+                null+            ],+            "window": [+                {+                    "as": "AverageRating",+                    "field": "IMDB_Rating",+                    "op": "mean"+                }+            ]+        },+        {+            "filter": "(datum.IMDB_Rating - datum.AverageRating) > 2.5"+        }+    ] }
tests/specs/gallery/advanced/advanced3.vl view
@@ -1,64 +1,35 @@ {-    "transform": [-        {-            "filter": "isValid(datum.IMDB_Rating)"-        },-        {-            "as": "year",-            "field": "Release_Date",-            "timeUnit": "year"-        },-        {-            "window": [-                {-                    "op": "mean",-                    "as": "AverageYearRating",-                    "field": "IMDB_Rating"-                }-            ],-            "groupby": [-                "year"-            ],-            "frame": [-                null,-                null-            ]-        },-        {-            "filter": "(datum.IMDB_Rating - datum.AverageYearRating) > 2.5"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "https://vega.github.io/vega-lite/data/movies.json",         "format": {             "parse": {                 "Release_Date": "date:'%d-%b-%y'"             }-        }+        },+        "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Calculation of difference from annual average",     "layer": [         {-            "mark": {-                "type": "bar",-                "clip": true-            },             "encoding": {                 "x": {-                    "field": "IMDB_Rating",-                    "type": "quantitative",                     "axis": {                         "title": "IMDB Rating"-                    }+                    },+                    "field": "IMDB_Rating",+                    "type": "quantitative"                 },                 "y": {                     "field": "Title",                     "type": "ordinal"                 }+            },+            "mark": {+                "clip": true,+                "type": "bar"             }         },         {-            "mark": "tick",             "encoding": {                 "color": {                     "value": "red"@@ -71,8 +42,37 @@                     "field": "Title",                     "type": "ordinal"                 }-            }+            },+            "mark": "tick"         }     ],-    "description": "Calculation of difference from annual average"+    "transform": [+        {+            "filter": "isValid(datum.IMDB_Rating)"+        },+        {+            "as": "year",+            "field": "Release_Date",+            "timeUnit": "year"+        },+        {+            "frame": [+                null,+                null+            ],+            "groupby": [+                "year"+            ],+            "window": [+                {+                    "as": "AverageYearRating",+                    "field": "IMDB_Rating",+                    "op": "mean"+                }+            ]+        },+        {+            "filter": "(datum.IMDB_Rating - datum.AverageYearRating) > 2.5"+        }+    ] }
tests/specs/gallery/advanced/advanced4.vl view
@@ -1,4 +1,27 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/movies.json"+    },+    "description": "A scatterplot showing each movie in the database and the difference from the average movie rating.",+    "encoding": {+        "x": {+            "field": "Release_Date",+            "type": "temporal"+        },+        "y": {+            "axis": {+                "title": "Residual"+            },+            "field": "RatingDelta",+            "type": "quantitative"+        }+    },+    "mark": {+        "opacity": 0.3,+        "strokeWidth": 0.3,+        "type": "point"+    },     "transform": [         {             "filter": "isValid(datum.IMDB_Rating)"@@ -15,44 +38,21 @@             }         },         {+            "frame": [+                null,+                null+            ],             "window": [                 {-                    "op": "mean",                     "as": "AverageRating",-                    "field": "IMDB_Rating"+                    "field": "IMDB_Rating",+                    "op": "mean"                 }-            ],-            "frame": [-                null,-                null             ]         },         {             "as": "RatingDelta",             "calculate": "datum.IMDB_Rating - datum.AverageRating"         }-    ],-    "mark": {-        "strokeWidth": 0.3,-        "opacity": 0.3,-        "type": "point"-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/movies.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x": {-            "field": "Release_Date",-            "type": "temporal"-        },-        "y": {-            "field": "RatingDelta",-            "type": "quantitative",-            "axis": {-                "title": "Residual"-            }-        }-    },-    "description": "A scatterplot showing each movie in the database and the difference from the average movie rating."+    ] }
tests/specs/gallery/advanced/advanced5.vl view
@@ -1,113 +1,82 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "rank",-                    "as": "rank"-                }-            ],-            "groupby": [-                "matchday"-            ],-            "sort": [-                {-                    "field": "point",-                    "order": "descending"-                },-                {-                    "field": "diff",-                    "order": "descending"-                }-            ]-        }-    ],-    "mark": {-        "orient": "vertical",-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "diff": -1,-                "point": 0,                 "matchday": 1,+                "point": 0,                 "team": "Germany"             },             {                 "diff": 1,-                "point": 3,                 "matchday": 1,+                "point": 3,                 "team": "Mexico"             },             {                 "diff": -1,-                "point": 0,                 "matchday": 1,+                "point": 0,                 "team": "South Korea"             },             {                 "diff": 1,-                "point": 3,                 "matchday": 1,+                "point": 3,                 "team": "Sweden"             },             {                 "diff": 0,-                "point": 3,                 "matchday": 2,+                "point": 3,                 "team": "Germany"             },             {                 "diff": 2,-                "point": 6,                 "matchday": 2,+                "point": 6,                 "team": "Mexico"             },             {                 "diff": -2,-                "point": 0,                 "matchday": 2,+                "point": 0,                 "team": "South Korea"             },             {                 "diff": 0,-                "point": 3,                 "matchday": 2,+                "point": 3,                 "team": "Sweden"             },             {                 "diff": -2,-                "point": 3,                 "matchday": 3,+                "point": 3,                 "team": "Germany"             },             {                 "diff": -1,-                "point": 6,                 "matchday": 3,+                "point": 6,                 "team": "Mexico"             },             {                 "diff": 0,-                "point": 3,                 "matchday": 3,+                "point": 3,                 "team": "South Korea"             },             {                 "diff": 3,-                "point": 6,                 "matchday": 3,+                "point": 6,                 "team": "Sweden"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": {-        "fontStyle": "italic",-        "text": "World Cup 2018: Group F Rankings",-        "frame": "bounds"-    },+    "description": "Line chart showing ranks over time for thw World Cup 2018 Group F teams",     "encoding": {         "color": {             "field": "team",@@ -136,5 +105,36 @@             "type": "ordinal"         }     },-    "description": "Line chart showing ranks over time for thw World Cup 2018 Group F teams"+    "mark": {+        "orient": "vertical",+        "type": "line"+    },+    "title": {+        "fontStyle": "italic",+        "frame": "bounds",+        "text": "World Cup 2018: Group F Rankings"+    },+    "transform": [+        {+            "groupby": [+                "matchday"+            ],+            "sort": [+                {+                    "field": "point",+                    "order": "descending"+                },+                {+                    "field": "diff",+                    "order": "descending"+                }+            ],+            "window": [+                {+                    "as": "rank",+                    "op": "rank"+                }+            ]+        }+    ] }
tests/specs/gallery/advanced/advanced6.vl view
@@ -1,53 +1,5 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "sum",-                    "as": "sum",-                    "field": "amount"-                }-            ]-        },-        {-            "window": [-                {-                    "op": "lead",-                    "as": "lead",-                    "field": "label"-                }-            ]-        },-        {-            "as": "lead",-            "calculate": "datum.lead === null ? datum.label : datum.lead"-        },-        {-            "as": "previous_sum",-            "calculate": "datum.label === 'End' ? 0 : datum.sum - datum.amount"-        },-        {-            "as": "amount",-            "calculate": "datum.label === 'End' ? datum.sum : datum.amount"-        },-        {-            "as": "text_amount",-            "calculate": "(datum.label !== 'Begin' && datum.label !== 'End' && datum.amount > 0 ? '+' : '') + datum.amount"-        },-        {-            "as": "center",-            "calculate": "(datum.sum + datum.previous_sum) / 2"-        },-        {-            "as": "sum_dec",-            "calculate": "datum.sum < datum.previous_sum ? datum.sum : ''"-        },-        {-            "as": "sum_inc",-            "calculate": "datum.sum > datum.previous_sum ? datum.sum : ''"-        }-    ],-    "height": 450,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -108,47 +60,47 @@             }         ]     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Waterfall chart of monthly profit and loss",+    "encoding": {+        "x": {+            "field": "label",+            "sort": null,+            "title": "Months",+            "type": "ordinal"+        }+    },+    "height": 450,     "layer": [         {-            "mark": {-                "size": 45,-                "type": "bar"-            },             "encoding": {                 "color": {-                    "value": "#93c4aa",                     "condition": [                         {-                            "value": "#f7e0b6",-                            "test": "datum.label === 'Begin' || datum.label === 'End'"+                            "test": "datum.label === 'Begin' || datum.label === 'End'",+                            "value": "#f7e0b6"                         },                         {-                            "value": "#f78a64",-                            "test": "datum.sum < datum.previous_sum"+                            "test": "datum.sum < datum.previous_sum",+                            "value": "#f78a64"                         }-                    ]-                },-                "y2": {-                    "field": "sum"+                    ],+                    "value": "#93c4aa"                 },                 "y": {                     "field": "previous_sum",                     "title": "Amount",                     "type": "quantitative"+                },+                "y2": {+                    "field": "sum"                 }+            },+            "mark": {+                "size": 45,+                "type": "bar"             }         },         {-            "mark": {-                "x2Offset": 22.5,-                "strokeWidth": 2,-                "color": "#404040",-                "opacity": 1,-                "xOffset": -22.5,-                "type": "rule"-            },             "encoding": {                 "x2": {                     "field": "lead"@@ -157,15 +109,17 @@                     "field": "sum",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "#404040",+                "opacity": 1,+                "strokeWidth": 2,+                "type": "rule",+                "x2Offset": 22.5,+                "xOffset": -22.5             }         },         {-            "mark": {-                "dy": -8,-                "color": "#404040",-                "type": "text",-                "fontWeight": "bold"-            },             "encoding": {                 "text": {                     "field": "sum_inc",@@ -175,16 +129,15 @@                     "field": "sum_inc",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "#404040",+                "dy": -8,+                "fontWeight": "bold",+                "type": "text"             }         },         {-            "mark": {-                "dy": 8,-                "color": "#404040",-                "type": "text",-                "baseline": "top",-                "fontWeight": "bold"-            },             "encoding": {                 "text": {                     "field": "sum_dec",@@ -194,21 +147,23 @@                     "field": "sum_dec",                     "type": "quantitative"                 }+            },+            "mark": {+                "baseline": "top",+                "color": "#404040",+                "dy": 8,+                "fontWeight": "bold",+                "type": "text"             }         },         {-            "mark": {-                "type": "text",-                "baseline": "middle",-                "fontWeight": "bold"-            },             "encoding": {                 "color": {-                    "value": "white",                     "condition": {-                        "value": "#725a30",-                        "test": "datum.label === 'Begin' || datum.label === 'End'"-                    }+                        "test": "datum.label === 'Begin' || datum.label === 'End'",+                        "value": "#725a30"+                    },+                    "value": "white"                 },                 "text": {                     "field": "text_amount",@@ -218,16 +173,61 @@                     "field": "center",                     "type": "quantitative"                 }+            },+            "mark": {+                "baseline": "middle",+                "fontWeight": "bold",+                "type": "text"             }         }     ],-    "encoding": {-        "x": {-            "field": "label",-            "sort": null,-            "title": "Months",-            "type": "ordinal"+    "transform": [+        {+            "window": [+                {+                    "as": "sum",+                    "field": "amount",+                    "op": "sum"+                }+            ]+        },+        {+            "window": [+                {+                    "as": "lead",+                    "field": "label",+                    "op": "lead"+                }+            ]+        },+        {+            "as": "lead",+            "calculate": "datum.lead === null ? datum.label : datum.lead"+        },+        {+            "as": "previous_sum",+            "calculate": "datum.label === 'End' ? 0 : datum.sum - datum.amount"+        },+        {+            "as": "amount",+            "calculate": "datum.label === 'End' ? datum.sum : datum.amount"+        },+        {+            "as": "text_amount",+            "calculate": "(datum.label !== 'Begin' && datum.label !== 'End' && datum.amount > 0 ? '+' : '') + datum.amount"+        },+        {+            "as": "center",+            "calculate": "(datum.sum + datum.previous_sum) / 2"+        },+        {+            "as": "sum_dec",+            "calculate": "datum.sum < datum.previous_sum ? datum.sum : ''"+        },+        {+            "as": "sum_inc",+            "calculate": "datum.sum > datum.previous_sum ? datum.sum : ''"         }-    },-    "description": "Waterfall chart of monthly profit and loss"+    ],+    "width": 800 }
tests/specs/gallery/advanced/advanced7.vl view
@@ -1,34 +1,34 @@ {-    "transform": [-        {-            "from": {-                "data": {-                    "url": "https://vega.github.io/vega-lite/data/lookup_people.csv"-                },-                "key": "name",-                "fields": [-                    "age",-                    "height"-                ]-            },-            "lookup": "person"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/lookup_groups.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Using the lookup transform to combine data",     "encoding": {         "x": {             "field": "group",             "type": "ordinal"         },         "y": {-            "field": "age",             "aggregate": "mean",+            "field": "age",             "type": "quantitative"         }     },-    "description": "Using the lookup transform to combine data"+    "mark": "bar",+    "transform": [+        {+            "from": {+                "data": {+                    "url": "https://vega.github.io/vega-lite/data/lookup_people.csv"+                },+                "fields": [+                    "age",+                    "height"+                ],+                "key": "name"+            },+            "lookup": "person"+        }+    ] }
tests/specs/gallery/advanced/advanced8.vl view
@@ -1,86 +1,43 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "count",-                    "as": "index"-                }-            ]-        },-        {-            "fold": [-                "petalLength",-                "petalWidth",-                "sepalLength",-                "sepalWidth"-            ]-        },-        {-            "groupby": [-                "key"-            ],-            "joinaggregate": [-                {-                    "op": "min",-                    "as": "min",-                    "field": "value"-                },-                {-                    "op": "max",-                    "as": "max",-                    "field": "value"-                }-            ]-        },-        {-            "as": "normVal",-            "calculate": "(datum.value - datum.min) / (datum.max-datum.min)"-        },-        {-            "as": "mid",-            "calculate": "(datum.min + datum.max) / 2"-        }-    ],-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {+        "axisX": {+            "domain": false,+            "labelAngle": 0,+            "tickColor": "#ccc"+        },         "style": {+            "label": {+                "align": "right",+                "baseline": "middle",+                "dx": -5,+                "tooltip": null+            },             "tick": {                 "orient": "horizontal",                 "tooltip": null-            },-            "label": {-                "dx": -5,-                "tooltip": null,-                "align": "right",-                "baseline": "middle"             }         },         "view": {             "stroke": null-        },-        "axisX": {-            "labelAngle": 0,-            "domain": false,-            "tickColor": "#ccc"         }     },     "data": {         "url": "https://vega.github.io/vega-lite/data/iris.json"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Parallel coordinates plot with manual generation of parallel axes",+    "height": 300,     "layer": [         {-            "mark": {-                "opacity": 0.3,-                "type": "line"-            },             "encoding": {                 "color": {                     "field": "species",                     "type": "nominal"                 },+                "detail": {+                    "field": "index",+                    "type": "nominal"+                },                 "tooltip": [                     {                         "field": "petalLength",@@ -103,45 +60,41 @@                     "field": "key",                     "type": "nominal"                 },-                "detail": {-                    "field": "index",-                    "type": "nominal"-                },                 "y": {+                    "axis": null,                     "field": "normVal",-                    "type": "quantitative",-                    "axis": null+                    "type": "quantitative"                 }+            },+            "mark": {+                "opacity": 0.3,+                "type": "line"             }         },         {-            "mark": {-                "color": "#ccc",-                "type": "rule"-            },             "encoding": {-                "x": {-                    "field": "key",-                    "type": "nominal",-                    "axis": {-                        "title": null-                    }-                },                 "detail": {                     "aggregate": "count",                     "type": "quantitative"+                },+                "x": {+                    "axis": {+                        "title": null+                    },+                    "field": "key",+                    "type": "nominal"                 }+            },+            "mark": {+                "color": "#ccc",+                "type": "rule"             }         },         {-            "mark": {-                "style": "label",-                "type": "text"-            },             "encoding": {                 "text": {-                    "field": "max",                     "aggregate": "max",+                    "field": "max",                     "type": "quantitative"                 },                 "x": {@@ -151,17 +104,17 @@                 "y": {                     "value": 0                 }-            }-        },-        {+            },             "mark": {                 "style": "label",                 "type": "text"-            },+            }+        },+        {             "encoding": {                 "text": {-                    "field": "mid",                     "aggregate": "min",+                    "field": "mid",                     "type": "quantitative"                 },                 "x": {@@ -171,17 +124,17 @@                 "y": {                     "value": 150                 }-            }-        },-        {+            },             "mark": {                 "style": "label",                 "type": "text"-            },+            }+        },+        {             "encoding": {                 "text": {-                    "field": "min",                     "aggregate": "min",+                    "field": "min",                     "type": "quantitative"                 },                 "x": {@@ -191,8 +144,55 @@                 "y": {                     "value": "height"                 }+            },+            "mark": {+                "style": "label",+                "type": "text"             }         }     ],-    "description": "Parallel coordinates plot with manual generation of parallel axes"+    "transform": [+        {+            "window": [+                {+                    "as": "index",+                    "op": "count"+                }+            ]+        },+        {+            "fold": [+                "petalLength",+                "petalWidth",+                "sepalLength",+                "sepalWidth"+            ]+        },+        {+            "groupby": [+                "key"+            ],+            "joinaggregate": [+                {+                    "as": "min",+                    "field": "value",+                    "op": "min"+                },+                {+                    "as": "max",+                    "field": "value",+                    "op": "max"+                }+            ]+        },+        {+            "as": "normVal",+            "calculate": "(datum.value - datum.min) / (datum.max-datum.min)"+        },+        {+            "as": "mid",+            "calculate": "(datum.min + datum.max) / 2"+        }+    ],+    "width": 600 }
tests/specs/gallery/advanced/advanced9.vl view
@@ -1,15 +1,15 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Production budget of the film with highest US Gross in each major genre.",     "encoding": {         "x": {-            "field": "Production_Budget",             "aggregate": {                 "argmax": "US_Gross"             },+            "field": "Production_Budget",             "type": "quantitative"         },         "y": {@@ -17,5 +17,5 @@             "type": "nominal"         }     },-    "description": "Production budget of the film with highest US Gross in each major genre."+    "mark": "bar" }
tests/specs/gallery/advanced/benchmark.vl view
@@ -1,306 +1,6 @@ {-    "height": 300,-    "width": 500,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "layer": [-        {-            "transform": [-                {-                    "window": [-                        {-                            "op": "row_number",-                            "as": "row"-                        }-                    ]-                },-                {-                    "as": "fps",-                    "calculate": "1000/datum.data"-                },-                {-                    "as": "system",-                    "calculate": "'Falcon'"-                }-            ],-            "mark": "line",-            "data": {-                "name": "falcon"-            }-        },-        {-            "transform": [-                {-                    "window": [-                        {-                            "op": "row_number",-                            "as": "row"-                        }-                    ]-                },-                {-                    "as": "fps",-                    "calculate": "1000/datum.data"-                },-                {-                    "as": "system",-                    "calculate": "'Square Crossfilter (3M)'"-                }-            ],-            "mark": "line",-            "data": {-                "name": "square"-            }-        }-    ],-    "encoding": {-        "color": {-            "field": "system",-            "type": "nominal",-            "legend": {-                "orient": "bottom-right",-                "title": "System"-            }-        },-        "size": {-            "value": 1-        },-        "x": {-            "field": "row",-            "scale": {-                "nice": false-            },-            "type": "quantitative",-            "axis": {-                "grid": false,-                "title": "Trial"-            }-        },-        "y": {-            "field": "fps",-            "scale": {-                "type": "log"-            },-            "type": "quantitative",-            "axis": {-                "grid": false,-                "title": "Frames per Second (fps)"-            }-        }-    },-    "description": "Line chart to show benchmarking results.",     "datasets": {-        "square": [-            24.200000762939453,-            17.899999618530273,-            15.800000190734863,-            58.400001525878906,-            151,-            2523.10009765625,-            245.3000030517578,-            136,-            72.30000305175781,-            55.70000076293945,-            42.400001525878906,-            37.70000076293945,-            30.100000381469727,-            30.100000381469727,-            21.799999237060547,-            20.600000381469727,-            21.799999237060547,-            17.600000381469727,-            18.200000762939453,-            21,-            941.7000122070313,-            177.39999389648438,-            2821.800048828125,-            359.20001220703125,-            318,-            217.10000610351563,-            126,-            69,-            57.79999923706055,-            45.29999923706055,-            35.599998474121094,-            29.100000381469727,-            23.799999237060547,-            44.20000076293945,-            17.700000762939453,-            17.700000762939453,-            15.699999809265137,-            27.799999237060547,-            22.799999237060547,-            3853.60009765625,-            91.5999984741211,-            181.39999389648438,-            476.29998779296875,-            265.8999938964844,-            254.60000610351563,-            2583.199951171875,-            124.80000305175781,-            73.19999694824219,-            56.400001525878906,-            48.70000076293945,-            41.599998474121094,-            21.100000381469727,-            20.299999237060547,-            21.299999237060547,-            18.299999237060547,-            17.100000381469727,-            19.5,-            828.2000122070313,-            162.1999969482422,-            217.89999389648438,-            205.5,-            197.60000610351563,-            2249.800048828125,-            103.0999984741211,-            71.69999694824219,-            57.599998474121094,-            41.400001525878906,-            34.5,-            22,-            20.5,-            21.700000762939453,-            18.299999237060547,-            17.299999237060547,-            19.399999618530273,-            666.7999877929688,-            214.89999389648438,-            212.3000030517578,-            125.80000305175781,-            67.69999694824219,-            56.099998474121094,-            45.79999923706055,-            38.29999923706055,-            33,-            35.400001525878906,-            22.700000762939453,-            19.399999618530273,-            19.899999618530273,-            24.100000381469727,-            19.299999237060547,-            21.299999237060547,-            3508.699951171875,-            204.10000610351563,-            125.4000015258789,-            65.30000305175781,-            60.79999923706055,-            44.099998474121094,-            36.29999923706055,-            30.5,-            28.600000381469727,-            16.5,-            18.600000381469727,-            23.700000762939453,-            22.299999237060547,-            17.600000381469727,-            19.200000762939453,-            448.79998779296875,-            124.4000015258789,-            66.5999984741211,-            53.5,-            51,-            45.20000076293945,-            28.399999618530273,-            29.200000762939453,-            26.700000762939453,-            25.899999618530273,-            18.100000381469727,-            17.600000381469727,-            20.100000381469727,-            25.200000762939453,-            3332,-            67.5,-            53.599998474121094,-            56.599998474121094,-            39.900001525878906,-            27.600000381469727,-            29.600000381469727,-            33.5,-            17.200000762939453,-            18.799999237060547,-            25.200000762939453,-            16.700000762939453,-            16.899999618530273,-            240.1999969482422,-            52.400001525878906,-            42.099998474121094,-            33.900001525878906,-            28,-            28.600000381469727,-            17.299999237060547,-            20,-            21,-            22.799999237060547,-            16.700000762939453,-            19.200000762939453,-            175.39999389648438,-            43.5,-            34.70000076293945,-            29.700000762939453,-            34.900001525878906,-            25.799999237060547,-            17.299999237060547,-            22.600000381469727,-            17.600000381469727,-            17.200000762939453,-            19.200000762939453,-            111.80000305175781,-            35.400001525878906,-            27.600000381469727,-            25.399999618530273,-            21.899999618530273,-            18.600000381469727,-            18.100000381469727,-            21.200000762939453,-            17.899999618530273,-            17,-            80.5999984741211,-            29.799999237060547,-            30.100000381469727,-            16,-            26.799999237060547,-            17.5,-            22.299999237060547,-            16.799999237060547,-            22.399999618530273,-            77.4000015258789,-            31,-            29.700000762939453,-            28.700000762939453,-            26,-            16.899999618530273,-            15.800000190734863,-            19,-            52.599998474121094,-            25.200000762939453,-            16.700000762939453,-            17.899999618530273,-            21,-            19.799999237060547,-            18.799999237060547,-            46.5,-            17.5,-            16.799999237060547,-            18.299999237060547,-            18.299999237060547,-            14.899999618530273,-            41,-            18.299999237060547,-            17.299999237060547,-            17,-            17.5,-            32.29999923706055,-            22.600000381469727,-            16.600000381469727,-            17.899999618530273,-            25.600000381469727,-            17.5,-            20.299999237060547,-            25.200000762939453,-            18.600000381469727,-            17.700000762939453-        ],         "falcon": [             16.81999969482422,             19.759998321533203,@@ -512,6 +212,306 @@             16.239999771118164,             16.040000915527344,             16.239999771118164+        ],+        "square": [+            24.200000762939453,+            17.899999618530273,+            15.800000190734863,+            58.400001525878906,+            151,+            2523.10009765625,+            245.3000030517578,+            136,+            72.30000305175781,+            55.70000076293945,+            42.400001525878906,+            37.70000076293945,+            30.100000381469727,+            30.100000381469727,+            21.799999237060547,+            20.600000381469727,+            21.799999237060547,+            17.600000381469727,+            18.200000762939453,+            21,+            941.7000122070313,+            177.39999389648438,+            2821.800048828125,+            359.20001220703125,+            318,+            217.10000610351563,+            126,+            69,+            57.79999923706055,+            45.29999923706055,+            35.599998474121094,+            29.100000381469727,+            23.799999237060547,+            44.20000076293945,+            17.700000762939453,+            17.700000762939453,+            15.699999809265137,+            27.799999237060547,+            22.799999237060547,+            3853.60009765625,+            91.5999984741211,+            181.39999389648438,+            476.29998779296875,+            265.8999938964844,+            254.60000610351563,+            2583.199951171875,+            124.80000305175781,+            73.19999694824219,+            56.400001525878906,+            48.70000076293945,+            41.599998474121094,+            21.100000381469727,+            20.299999237060547,+            21.299999237060547,+            18.299999237060547,+            17.100000381469727,+            19.5,+            828.2000122070313,+            162.1999969482422,+            217.89999389648438,+            205.5,+            197.60000610351563,+            2249.800048828125,+            103.0999984741211,+            71.69999694824219,+            57.599998474121094,+            41.400001525878906,+            34.5,+            22,+            20.5,+            21.700000762939453,+            18.299999237060547,+            17.299999237060547,+            19.399999618530273,+            666.7999877929688,+            214.89999389648438,+            212.3000030517578,+            125.80000305175781,+            67.69999694824219,+            56.099998474121094,+            45.79999923706055,+            38.29999923706055,+            33,+            35.400001525878906,+            22.700000762939453,+            19.399999618530273,+            19.899999618530273,+            24.100000381469727,+            19.299999237060547,+            21.299999237060547,+            3508.699951171875,+            204.10000610351563,+            125.4000015258789,+            65.30000305175781,+            60.79999923706055,+            44.099998474121094,+            36.29999923706055,+            30.5,+            28.600000381469727,+            16.5,+            18.600000381469727,+            23.700000762939453,+            22.299999237060547,+            17.600000381469727,+            19.200000762939453,+            448.79998779296875,+            124.4000015258789,+            66.5999984741211,+            53.5,+            51,+            45.20000076293945,+            28.399999618530273,+            29.200000762939453,+            26.700000762939453,+            25.899999618530273,+            18.100000381469727,+            17.600000381469727,+            20.100000381469727,+            25.200000762939453,+            3332,+            67.5,+            53.599998474121094,+            56.599998474121094,+            39.900001525878906,+            27.600000381469727,+            29.600000381469727,+            33.5,+            17.200000762939453,+            18.799999237060547,+            25.200000762939453,+            16.700000762939453,+            16.899999618530273,+            240.1999969482422,+            52.400001525878906,+            42.099998474121094,+            33.900001525878906,+            28,+            28.600000381469727,+            17.299999237060547,+            20,+            21,+            22.799999237060547,+            16.700000762939453,+            19.200000762939453,+            175.39999389648438,+            43.5,+            34.70000076293945,+            29.700000762939453,+            34.900001525878906,+            25.799999237060547,+            17.299999237060547,+            22.600000381469727,+            17.600000381469727,+            17.200000762939453,+            19.200000762939453,+            111.80000305175781,+            35.400001525878906,+            27.600000381469727,+            25.399999618530273,+            21.899999618530273,+            18.600000381469727,+            18.100000381469727,+            21.200000762939453,+            17.899999618530273,+            17,+            80.5999984741211,+            29.799999237060547,+            30.100000381469727,+            16,+            26.799999237060547,+            17.5,+            22.299999237060547,+            16.799999237060547,+            22.399999618530273,+            77.4000015258789,+            31,+            29.700000762939453,+            28.700000762939453,+            26,+            16.899999618530273,+            15.800000190734863,+            19,+            52.599998474121094,+            25.200000762939453,+            16.700000762939453,+            17.899999618530273,+            21,+            19.799999237060547,+            18.799999237060547,+            46.5,+            17.5,+            16.799999237060547,+            18.299999237060547,+            18.299999237060547,+            14.899999618530273,+            41,+            18.299999237060547,+            17.299999237060547,+            17,+            17.5,+            32.29999923706055,+            22.600000381469727,+            16.600000381469727,+            17.899999618530273,+            25.600000381469727,+            17.5,+            20.299999237060547,+            25.200000762939453,+            18.600000381469727,+            17.700000762939453         ]-    }+    },+    "description": "Line chart to show benchmarking results.",+    "encoding": {+        "color": {+            "field": "system",+            "legend": {+                "orient": "bottom-right",+                "title": "System"+            },+            "type": "nominal"+        },+        "size": {+            "value": 1+        },+        "x": {+            "axis": {+                "grid": false,+                "title": "Trial"+            },+            "field": "row",+            "scale": {+                "nice": false+            },+            "type": "quantitative"+        },+        "y": {+            "axis": {+                "grid": false,+                "title": "Frames per Second (fps)"+            },+            "field": "fps",+            "scale": {+                "type": "log"+            },+            "type": "quantitative"+        }+    },+    "height": 300,+    "layer": [+        {+            "data": {+                "name": "falcon"+            },+            "mark": "line",+            "transform": [+                {+                    "window": [+                        {+                            "as": "row",+                            "op": "row_number"+                        }+                    ]+                },+                {+                    "as": "fps",+                    "calculate": "1000/datum.data"+                },+                {+                    "as": "system",+                    "calculate": "'Falcon'"+                }+            ]+        },+        {+            "data": {+                "name": "square"+            },+            "mark": "line",+            "transform": [+                {+                    "window": [+                        {+                            "as": "row",+                            "op": "row_number"+                        }+                    ]+                },+                {+                    "as": "fps",+                    "calculate": "1000/datum.data"+                },+                {+                    "as": "system",+                    "calculate": "'Square Crossfilter (3M)'"+                }+            ]+        }+    ],+    "width": 500 }
tests/specs/gallery/advanced/density1.vl view
@@ -1,4 +1,25 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/iris.json"+    },+    "encoding": {+        "row": {+            "field": "organ",+            "type": "nominal"+        },+        "x": {+            "field": "value",+            "title": "value (cm)",+            "type": "quantitative"+        },+        "y": {+            "field": "density",+            "type": "quantitative"+        }+    },+    "height": 50,+    "mark": "area",     "transform": [         {             "as": [@@ -13,33 +34,12 @@             ]         },         {+            "bandwidth": 0.3,+            "density": "value",             "groupby": [                 "organ"-            ],-            "bandwidth": 0.3,-            "density": "value"+            ]         }     ],-    "height": 50,-    "mark": "area",-    "data": {-        "url": "https://vega.github.io/vega-lite/data/iris.json"-    },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "row": {-            "field": "organ",-            "type": "nominal"-        },-        "x": {-            "field": "value",-            "title": "value (cm)",-            "type": "quantitative"-        },-        "y": {-            "field": "density",-            "type": "quantitative"-        }-    }+    "width": 300 }
tests/specs/gallery/advanced/density2.vl view
@@ -1,4 +1,28 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/iris.json"+    },+    "encoding": {+        "color": {+            "field": "measurement",+            "type": "nominal"+        },+        "x": {+            "field": "value",+            "title": "width/length (cm)",+            "type": "quantitative"+        },+        "y": {+            "field": "density",+            "type": "quantitative"+        }+    },+    "height": 100,+    "mark": {+        "opacity": 0.5,+        "type": "area"+    },     "transform": [         {             "as": [@@ -13,41 +37,17 @@             ]         },         {-            "groupby": [-                "measurement"-            ],+            "bandwidth": 0.3,+            "density": "value",             "extent": [                 0,                 8             ],-            "steps": 200,-            "bandwidth": 0.3,-            "density": "value"+            "groupby": [+                "measurement"+            ],+            "steps": 200         }     ],-    "height": 100,-    "mark": {-        "opacity": 0.5,-        "type": "area"-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/iris.json"-    },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "color": {-            "field": "measurement",-            "type": "nominal"-        },-        "x": {-            "field": "value",-            "title": "width/length (cm)",-            "type": "quantitative"-        },-        "y": {-            "field": "density",-            "type": "quantitative"-        }-    }+    "width": 400 }
tests/specs/gallery/advanced/filter1.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "rank",-                    "as": "rank"-                }-            ],-            "sort": [-                {-                    "field": "score",-                    "order": "descending"-                }-            ]-        },-        {-            "filter": "datum.rank <=5"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -111,7 +92,7 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Filtering the top-k items",     "encoding": {         "x": {             "field": "score",@@ -126,5 +107,24 @@             "type": "nominal"         }     },-    "description": "Filtering the top-k items"+    "mark": "bar",+    "transform": [+        {+            "sort": [+                {+                    "field": "score",+                    "order": "descending"+                }+            ],+            "window": [+                {+                    "as": "rank",+                    "op": "rank"+                }+            ]+        },+        {+            "filter": "datum.rank <=5"+        }+    ] }
tests/specs/gallery/advanced/filter2.vl view
@@ -1,58 +1,58 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/movies.json"+    },+    "description": "Top-k items with 'others'",+    "encoding": {+        "x": {+            "aggregate": "mean",+            "field": "aggregateGross",+            "title": null,+            "type": "quantitative"+        },+        "y": {+            "field": "rankedDirector",+            "sort": {+                "encoding": "x",+                "order": "descending"+            },+            "title": null,+            "type": "ordinal"+        }+    },+    "mark": "bar",+    "title": "Top Directors by Average Worldwide Gross",     "transform": [         {-            "groupby": [-                "Director"-            ],             "aggregate": [                 {-                    "op": "mean",                     "as": "aggregateGross",-                    "field": "Worldwide_Gross"+                    "field": "Worldwide_Gross",+                    "op": "mean"                 }+            ],+            "groupby": [+                "Director"             ]         },         {-            "window": [-                {-                    "op": "row_number",-                    "as": "rank"-                }-            ],             "sort": [                 {                     "field": "aggregateGross",                     "order": "descending"                 }+            ],+            "window": [+                {+                    "as": "rank",+                    "op": "row_number"+                }             ]         },         {             "as": "rankedDirector",             "calculate": "datum.rank < 10 ? datum.Director : 'All Others'"         }-    ],-    "mark": "bar",-    "data": {-        "url": "https://vega.github.io/vega-lite/data/movies.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Top Directors by Average Worldwide Gross",-    "encoding": {-        "x": {-            "field": "aggregateGross",-            "aggregate": "mean",-            "title": null,-            "type": "quantitative"-        },-        "y": {-            "field": "rankedDirector",-            "sort": {-                "encoding": "x",-                "order": "descending"-            },-            "title": null,-            "type": "ordinal"-        }-    },-    "description": "Top-k items with 'others'"+    ] }
tests/specs/gallery/advanced/irisScatterplotMatrix.vl view
@@ -1,25 +1,23 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/iris.json"     },     "repeat": {-        "row": [-            "petalWidth",-            "petalLength",-            "sepalWidth",-            "sepalLength"-        ],         "column": [             "sepalLength",             "sepalWidth",             "petalLength",             "petalWidth"+        ],+        "row": [+            "petalWidth",+            "petalLength",+            "sepalWidth",+            "sepalLength"         ]     },     "spec": {-        "height": 150,-        "mark": "point",-        "width": 150,         "encoding": {             "color": {                 "field": "species",@@ -43,7 +41,9 @@                 },                 "type": "quantitative"             }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+        },+        "height": 150,+        "mark": "point",+        "width": 150+    } }
tests/specs/gallery/advanced/layered1.vl view
@@ -1,32 +1,71 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/movies.json"+    },+    "description": "Layered Histogram and Cumulative Histogram",+    "encoding": {+        "x": {+            "field": "binIMDB_Rating",+            "scale": {+                "zero": false+            },+            "title": "IMDB Rating",+            "type": "quantitative"+        },+        "x2": {+            "field": "binIMDB_Rating_end"+        }+    },+    "layer": [+        {+            "encoding": {+                "y": {+                    "field": "cumulativeCount",+                    "type": "quantitative"+                }+            },+            "mark": "bar"+        },+        {+            "encoding": {+                "y": {+                    "field": "count",+                    "type": "quantitative"+                }+            },+            "mark": {+                "color": "yellow",+                "opacity": 0.5,+                "type": "bar"+            }+        }+    ],     "transform": [         {             "as": "binIMDB_Rating",-            "field": "IMDB_Rating",-            "bin": true+            "bin": true,+            "field": "IMDB_Rating"         },         {-            "groupby": [-                "binIMDB_Rating",-                "binIMDB_Rating_end"-            ],             "aggregate": [                 {-                    "op": "count",-                    "as": "count"+                    "as": "count",+                    "op": "count"                 }+            ],+            "groupby": [+                "binIMDB_Rating",+                "binIMDB_Rating_end"             ]         },         {             "filter": "datum.binIMDB_Rating !== null"         },         {-            "window": [-                {-                    "op": "sum",-                    "as": "cumulativeCount",-                    "field": "count"-                }+            "frame": [+                null,+                0             ],             "sort": [                 {@@ -34,52 +73,13 @@                     "order": "ascending"                 }             ],-            "frame": [-                null,-                0-            ]-        }-    ],-    "data": {-        "url": "https://vega.github.io/vega-lite/data/movies.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "layer": [-        {-            "mark": "bar",-            "encoding": {-                "y": {-                    "field": "cumulativeCount",-                    "type": "quantitative"-                }-            }-        },-        {-            "mark": {-                "color": "yellow",-                "opacity": 0.5,-                "type": "bar"-            },-            "encoding": {-                "y": {+            "window": [+                {+                    "as": "cumulativeCount",                     "field": "count",-                    "type": "quantitative"+                    "op": "sum"                 }-            }-        }-    ],-    "encoding": {-        "x2": {-            "field": "binIMDB_Rating_end"-        },-        "x": {-            "field": "binIMDB_Rating",-            "scale": {-                "zero": false-            },-            "title": "IMDB Rating",-            "type": "quantitative"+            ]         }-    },-    "description": "Layered Histogram and Cumulative Histogram"+    ] }
tests/specs/gallery/advanced/layered2.vl view
@@ -1,19 +1,11 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Plot showing average data with raw values in the background.",     "layer": [         {-            "mark": {-                "opacity": 0.3,-                "type": "point"-            },             "encoding": {                 "x": {                     "field": "date",@@ -24,10 +16,13 @@                     "field": "price",                     "type": "quantitative"                 }+            },+            "mark": {+                "opacity": 0.3,+                "type": "point"             }         },         {-            "mark": "line",             "encoding": {                 "x": {                     "field": "date",@@ -35,12 +30,17 @@                     "type": "temporal"                 },                 "y": {-                    "field": "price",                     "aggregate": "mean",+                    "field": "price",                     "type": "quantitative"                 }-            }+            },+            "mark": "line"         }     ],-    "description": "Plot showing average data with raw values in the background."+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        }+    ] }
tests/specs/gallery/advanced/layered3.vl view
@@ -1,31 +1,12 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "mean",-                    "as": "rollingMean",-                    "field": "temp_max"-                }-            ],-            "frame": [-                -15,-                15-            ]-        }-    ],-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Plot showing a 30 day rolling average with raw values in the background.",+    "height": 300,     "layer": [         {-            "mark": {-                "opacity": 0.3,-                "type": "point"-            },             "encoding": {                 "x": {                     "field": "date",@@ -37,14 +18,13 @@                     "title": "Maximum temperature",                     "type": "quantitative"                 }+            },+            "mark": {+                "opacity": 0.3,+                "type": "point"             }         },         {-            "mark": {-                "color": "red",-                "size": 3,-                "type": "line"-            },             "encoding": {                 "x": {                     "field": "date",@@ -54,8 +34,28 @@                     "field": "rollingMean",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "size": 3,+                "type": "line"             }         }     ],-    "description": "Plot showing a 30 day rolling average with raw values in the background."+    "transform": [+        {+            "frame": [+                -15,+                15+            ],+            "window": [+                {+                    "as": "rollingMean",+                    "field": "temp_max",+                    "op": "mean"+                }+            ]+        }+    ],+    "width": 400 }
tests/specs/gallery/advanced/transform1.vl view
@@ -1,87 +1,87 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "count",-                    "as": "cumulativeCount"-                }-            ],-            "sort": [-                {-                    "field": "NOX",-                    "order": "ascending"-                }-            ]+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "format": {+            "parse": {+                "NOX": "number"+            }+        },+        "url": "https://gicentre.github.io/data/putneyAirQuality2018.csv"+    },+    "description": "Cumulative Frequency Distribution",+    "encoding": {+        "x": {+            "field": "NOX",+            "title": "NOX concentration (μg/㎥)",+            "type": "quantitative"+        },+        "y": {+            "field": "cumulativeCount",+            "type": "quantitative"         }-    ],+    },     "mark": {-        "strokeWidth": 2,-        "stroke": {+        "fill": {+            "gradient": "linear",             "stops": [                 {-                    "color": "orange",+                    "color": "white",                     "offset": 0                 },                 {-                    "color": "green",-                    "offset": 0.5-                },-                {-                    "color": "purple",+                    "color": "black",                     "offset": 1                 }             ],-            "gradient": "linear"-        },-        "fill": {+            "x1": 0,             "x2": 1,             "y1": 1,+            "y2": 1+        },+        "fillOpacity": 0.5,+        "stroke": {+            "gradient": "linear",             "stops": [                 {-                    "color": "white",+                    "color": "orange",                     "offset": 0                 },                 {-                    "color": "black",+                    "color": "green",+                    "offset": 0.5+                },+                {+                    "color": "purple",                     "offset": 1                 }-            ],-            "gradient": "linear",-            "y2": 1,-            "x1": 0+            ]         },-        "strokeDashOffset": 5,         "strokeDash": [             10,             6,             6,             6         ],+        "strokeDashOffset": 5,         "strokeOpacity": 0.8,-        "type": "area",-        "fillOpacity": 0.5-    },-    "data": {-        "url": "https://gicentre.github.io/data/putneyAirQuality2018.csv",-        "format": {-            "parse": {-                "NOX": "number"-            }-        }+        "strokeWidth": 2,+        "type": "area"     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x": {-            "field": "NOX",-            "title": "NOX concentration (μg/㎥)",-            "type": "quantitative"-        },-        "y": {-            "field": "cumulativeCount",-            "type": "quantitative"+    "transform": [+        {+            "sort": [+                {+                    "field": "NOX",+                    "order": "ascending"+                }+            ],+            "window": [+                {+                    "as": "cumulativeCount",+                    "op": "count"+                }+            ]         }-    },-    "description": "Cumulative Frequency Distribution"+    ],+    "width": 500 }
tests/specs/gallery/area/area1.vl view
@@ -1,28 +1,28 @@ {-    "height": 200,-    "mark": "area",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/unemployment-across-industries.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Unemployment over time (area chart)",     "encoding": {         "x": {-            "field": "date",-            "timeUnit": "yearmonth",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "timeUnit": "yearmonth",+            "type": "temporal"         },         "y": {-            "field": "count",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "title": "Count"-            }+            },+            "field": "count",+            "type": "quantitative"         }     },-    "description": "Unemployment over time (area chart)"+    "height": 200,+    "mark": "area",+    "width": 300 }
tests/specs/gallery/area/area2.vl view
@@ -1,30 +1,30 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        }-    ],-    "mark": {-        "line": true,-        "point": true,-        "type": "area"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Area chart with overlaid lines and point markers",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Area chart with overlaid lines and point markers"+    "mark": {+        "line": true,+        "point": true,+        "type": "area"+    },+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        }+    ] }
tests/specs/gallery/area/area3.vl view
@@ -1,9 +1,9 @@ {-    "mark": "area",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/unemployment-across-industries.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Unemployment across industries as a stacked area chart.",     "encoding": {         "color": {             "field": "series",@@ -13,18 +13,18 @@             "type": "nominal"         },         "x": {-            "field": "date",-            "timeUnit": "yearmonth",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "timeUnit": "yearmonth",+            "type": "temporal"         },         "y": {-            "field": "count",             "aggregate": "sum",+            "field": "count",             "type": "quantitative"         }     },-    "description": "Unemployment across industries as a stacked area chart."+    "mark": "area" }
tests/specs/gallery/area/area4.vl view
@@ -1,11 +1,9 @@ {-    "height": 200,-    "mark": "area",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/unemployment-across-industries.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Unemployment across industries as a normalised area chart.",     "encoding": {         "color": {             "field": "series",@@ -15,21 +13,23 @@             "type": "nominal"         },         "x": {-            "field": "date",-            "timeUnit": "yearmonth",-            "type": "temporal",             "axis": {                 "domain": false,                 "format": "%Y"-            }+            },+            "field": "date",+            "timeUnit": "yearmonth",+            "type": "temporal"         },         "y": {-            "field": "count",             "aggregate": "sum",-            "type": "quantitative",             "axis": null,-            "stack": "normalize"+            "field": "count",+            "stack": "normalize",+            "type": "quantitative"         }     },-    "description": "Unemployment across industries as a normalised area chart."+    "height": 200,+    "mark": "area",+    "width": 300 }
tests/specs/gallery/area/area5.vl view
@@ -1,11 +1,9 @@ {-    "height": 200,-    "mark": "area",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/unemployment-across-industries.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Unemployment across industries as a streamgraph (centred, stacked area chart).",     "encoding": {         "color": {             "field": "series",@@ -15,21 +13,23 @@             "type": "nominal"         },         "x": {-            "field": "date",-            "timeUnit": "yearmonth",-            "type": "temporal",             "axis": {                 "domain": false,                 "format": "%Y"-            }+            },+            "field": "date",+            "timeUnit": "yearmonth",+            "type": "temporal"         },         "y": {-            "field": "count",             "aggregate": "sum",-            "type": "quantitative",             "axis": null,-            "stack": "center"+            "field": "count",+            "stack": "center",+            "type": "quantitative"         }     },-    "description": "Unemployment across industries as a streamgraph (centred, stacked area chart)."+    "height": 200,+    "mark": "area",+    "width": 300 }
tests/specs/gallery/area/area6.vl view
@@ -1,9 +1,9 @@ {-    "height": 50,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "area": {-            "orient": "vertical",-            "interpolate": "monotone"+            "interpolate": "monotone",+            "orient": "vertical"         }     },     "data": {@@ -90,14 +90,20 @@             }         ]     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Horizon chart with 2 layers. (See https://idl.cs.washington.edu/papers/horizon/ for more details on horizon charts.)",+    "encoding": {+        "x": {+            "field": "x",+            "scale": {+                "nice": false,+                "zero": false+            },+            "type": "quantitative"+        }+    },+    "height": 50,     "layer": [         {-            "mark": {-                "type": "area",-                "clip": true-            },             "encoding": {                 "opacity": {                     "value": 0.6@@ -112,24 +118,21 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "clip": true,+                "type": "area"             }         },         {-            "transform": [-                {-                    "as": "ny",-                    "calculate": "datum.y - 50"-                }-            ],-            "mark": {-                "type": "area",-                "clip": true-            },             "encoding": {                 "opacity": {                     "value": 0.3                 },                 "y": {+                    "axis": {+                        "title": "y"+                    },                     "field": "ny",                     "scale": {                         "domain": [@@ -137,23 +140,20 @@                             50                         ]                     },-                    "type": "quantitative",-                    "axis": {-                        "title": "y"-                    }+                    "type": "quantitative"                 }-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "x",-            "scale": {-                "zero": false,-                "nice": false             },-            "type": "quantitative"+            "mark": {+                "clip": true,+                "type": "area"+            },+            "transform": [+                {+                    "as": "ny",+                    "calculate": "datum.y - 50"+                }+            ]         }-    },-    "description": "Horizon chart with 2 layers. (See https://idl.cs.washington.edu/papers/horizon/ for more details on horizon charts.)"+    ],+    "width": 300 }
tests/specs/gallery/area/area7.vl view
@@ -1,23 +1,46 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "axis": {+            "domain": false,+            "grid": false,+            "labels": false,+            "ticks": false+        },+        "concat": {+            "spacing": 10+        },+        "view": {+            "stroke": null+        }+    },+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },+    "resolve": {+        "scale": {+            "x": "shared"+        }+    },     "transform": [         {-            "groupby": [-                "Origin",-                "Cylinders"-            ],             "aggregate": [                 {-                    "op": "count",-                    "as": "count_*"+                    "as": "count_*",+                    "op": "count"                 }+            ],+            "groupby": [+                "Origin",+                "Cylinders"             ]         },         {-            "groupby": [],             "as": [                 "stack_count_Origin1",                 "stack_count_Origin2"             ],+            "groupby": [],             "offset": "normalize",             "sort": [                 {@@ -28,47 +51,45 @@             "stack": "count_*"         },         {+            "frame": [+                null,+                null+            ],+            "groupby": [+                "Origin"+            ],+            "sort": [+                {+                    "field": "Cylinders",+                    "order": "ascending"+                }+            ],             "window": [                 {-                    "op": "min",                     "as": "x",-                    "field": "stack_count_Origin1"+                    "field": "stack_count_Origin1",+                    "op": "min"                 },                 {-                    "op": "max",                     "as": "x2",-                    "field": "stack_count_Origin2"+                    "field": "stack_count_Origin2",+                    "op": "max"                 },                 {-                    "op": "dense_rank",-                    "as": "rank_Cylinders"+                    "as": "rank_Cylinders",+                    "op": "dense_rank"                 },                 {-                    "op": "distinct",                     "as": "distinct_Cylinders",-                    "field": "Cylinders"-                }-            ],-            "groupby": [-                "Origin"-            ],-            "sort": [-                {                     "field": "Cylinders",-                    "order": "ascending"+                    "op": "distinct"                 }-            ],-            "frame": [-                null,-                null             ]         },         {-            "window": [-                {-                    "op": "dense_rank",-                    "as": "rank_Origin"-                }+            "frame": [+                null,+                null             ],             "sort": [                 {@@ -76,19 +97,21 @@                     "order": "ascending"                 }             ],-            "frame": [-                null,-                null+            "window": [+                {+                    "as": "rank_Origin",+                    "op": "dense_rank"+                }             ]         },         {-            "groupby": [-                "Origin"-            ],             "as": [                 "y",                 "y2"             ],+            "groupby": [+                "Origin"+            ],             "offset": "normalize",             "sort": [                 {@@ -123,73 +146,47 @@             "calculate": "(datum.ny+datum.ny2)/2"         }     ],-    "config": {-        "concat": {-            "spacing": 10-        },-        "view": {-            "stroke": null-        },-        "axis": {-            "domain": false,-            "labels": false,-            "grid": false,-            "ticks": false-        }-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },-    "resolve": {-        "scale": {-            "x": "shared"-        }-    },     "vconcat": [         {-            "mark": {-                "align": "center",-                "type": "text",-                "baseline": "middle"-            },             "encoding": {                 "color": {                     "field": "Origin",-                    "type": "nominal",-                    "legend": null+                    "legend": null,+                    "type": "nominal"                 },                 "text": {                     "field": "Origin",                     "type": "nominal"                 },                 "x": {-                    "field": "xc",                     "aggregate": "min",-                    "title": "Origin",-                    "type": "quantitative",                     "axis": {                         "orient": "top"-                    }+                    },+                    "field": "xc",+                    "title": "Origin",+                    "type": "quantitative"                 }+            },+            "mark": {+                "align": "center",+                "baseline": "middle",+                "type": "text"             }         },         {             "layer": [                 {-                    "mark": "rect",                     "encoding": {-                        "x2": {-                            "field": "nx2"-                        },                         "color": {                             "field": "Origin",-                            "type": "nominal",-                            "legend": null+                            "legend": null,+                            "type": "nominal"                         },                         "opacity": {                             "field": "Cylinders",-                            "type": "quantitative",-                            "legend": null+                            "legend": null,+                            "type": "quantitative"                         },                         "tooltip": [                             {@@ -202,46 +199,49 @@                             }                         ],                         "x": {+                            "axis": null,                             "field": "nx",-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"                         },-                        "y2": {-                            "field": "ny2"+                        "x2": {+                            "field": "nx2"                         },                         "y": {+                            "axis": null,                             "field": "ny",-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"+                        },+                        "y2": {+                            "field": "ny2"                         }-                    }+                    },+                    "mark": "rect"                 },                 {-                    "mark": {-                        "type": "text",-                        "baseline": "middle"-                    },                     "encoding": {                         "text": {                             "field": "Cylinders",                             "type": "nominal"                         },                         "x": {+                            "axis": null,                             "field": "xc",-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"                         },                         "y": {-                            "field": "yc",-                            "type": "quantitative",                             "axis": {                                 "title": "Cylinders"-                            }+                            },+                            "field": "yc",+                            "type": "quantitative"                         }+                    },+                    "mark": {+                        "baseline": "middle",+                        "type": "text"                     }                 }             ]         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/gallery/area/lasagna.vl view
@@ -1,36 +1,21 @@ {-    "transform": [-        {-            "filter": "datum.symbol !== 'GOOG'"-        }-    ],-    "height": 100,-    "mark": "rect",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {-            "field": "price",             "aggregate": "sum",+            "field": "price",             "title": "Price",             "type": "quantitative"         },         "x": {-            "field": "date",-            "timeUnit": "yearmonthdate",-            "title": "Time",-            "type": "ordinal",             "axis": {-                "labelAngle": 0,-                "labelOverlap": false,                 "format": "%Y",+                "labelAngle": 0,                 "labelColor": {-                    "value": null,                     "condition": {-                        "value": "black",                         "test": {                             "equal": {                                 "date": 1,@@ -38,13 +23,14 @@                             },                             "field": "value",                             "timeUnit": "monthdate"-                        }-                    }+                        },+                        "value": "black"+                    },+                    "value": null                 },+                "labelOverlap": false,                 "tickColor": {-                    "value": null,                     "condition": {-                        "value": "black",                         "test": {                             "equal": {                                 "date": 1,@@ -52,15 +38,29 @@                             },                             "field": "value",                             "timeUnit": "monthdate"-                        }-                    }+                        },+                        "value": "black"+                    },+                    "value": null                 }-            }+            },+            "field": "date",+            "timeUnit": "yearmonthdate",+            "title": "Time",+            "type": "ordinal"         },         "y": {             "field": "symbol",             "title": null,             "type": "nominal"         }-    }+    },+    "height": 100,+    "mark": "rect",+    "transform": [+        {+            "filter": "datum.symbol !== 'GOOG'"+        }+    ],+    "width": 300 }
tests/specs/gallery/bar/agesorted.vl view
@@ -1,25 +1,17 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        }-    ],-    "height": {-        "step": 17-    },-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A bar chart showing the US population distribution of age groups in 2000, sorted by population",     "encoding": {         "x": {-            "field": "people",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "title": "population"-            }+            },+            "field": "people",+            "type": "quantitative"         },         "y": {             "field": "age",@@ -30,5 +22,13 @@             "type": "ordinal"         }     },-    "description": "A bar chart showing the US population distribution of age groups in 2000, sorted by population"+    "height": {+        "step": 17+    },+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        }+    ] }
tests/specs/gallery/bar/bar1.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -40,7 +40,7 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A simple bar chart with embedded data.",     "encoding": {         "x": {             "field": "a",@@ -51,5 +51,5 @@             "type": "quantitative"         }     },-    "description": "A simple bar chart with embedded data."+    "mark": "bar" }
tests/specs/gallery/bar/bar10.vl view
@@ -1,21 +1,9 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        },-        {-            "as": "gender",-            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "width": {-        "step": 17-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Layered bar chart showing the US population distribution of age groups and gender in 2000.",     "encoding": {         "color": {             "field": "gender",@@ -35,14 +23,26 @@             "type": "ordinal"         },         "y": {-            "field": "people",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "title": "Population"             },-            "stack": null+            "field": "people",+            "stack": null,+            "type": "quantitative"         }     },-    "description": "Layered bar chart showing the US population distribution of age groups and gender in 2000."+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        },+        {+            "as": "gender",+            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"+        }+    ],+    "width": {+        "step": 17+    } }
tests/specs/gallery/bar/bar11.vl view
@@ -1,336 +1,336 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {+                "percentage": 0.7,                 "percentage_end": -18.4,-                "value": 24,                 "percentage_start": -19.1,+                "question": "Q1",                 "type": "Strongly disagree",-                "percentage": 0.7,-                "question": "Q1"+                "value": 24             },             {+                "percentage": 9.1,                 "percentage_end": -9.2,-                "value": 294,                 "percentage_start": -18.4,+                "question": "Q1",                 "type": "Disagree",-                "percentage": 9.1,-                "question": "Q1"+                "value": 294             },             {+                "percentage": 18.5,                 "percentage_end": 9.2,-                "value": 594,                 "percentage_start": -9.2,+                "question": "Q1",                 "type": "Neither agree nor disagree",-                "percentage": 18.5,-                "question": "Q1"+                "value": 594             },             {+                "percentage": 59.9,                 "percentage_end": 69.2,-                "value": 1927,                 "percentage_start": 9.2,+                "question": "Q1",                 "type": "Agree",-                "percentage": 59.9,-                "question": "Q1"+                "value": 1927             },             {+                "percentage": 11.7,                 "percentage_end": 80.9,-                "value": 376,                 "percentage_start": 69.2,+                "question": "Q1",                 "type": "Strongly agree",-                "percentage": 11.7,-                "question": "Q1"+                "value": 376             },             {+                "percentage": 18.2,                 "percentage_end": -18.2,-                "value": 2,                 "percentage_start": -36.4,+                "question": "Q2",                 "type": "Strongly disagree",-                "percentage": 18.2,-                "question": "Q2"+                "value": 2             },             {+                "percentage": 18.2,                 "percentage_end": 0,-                "value": 2,                 "percentage_start": -18.2,+                "question": "Q2",                 "type": "Disagree",-                "percentage": 18.2,-                "question": "Q2"+                "value": 2             },             {+                "percentage": 0,                 "percentage_end": 0,-                "value": 0,                 "percentage_start": 0,+                "question": "Q2",                 "type": "Neither agree nor disagree",-                "percentage": 0,-                "question": "Q2"+                "value": 0             },             {+                "percentage": 63.6,                 "percentage_end": 63.6,-                "value": 7,                 "percentage_start": 0,+                "question": "Q2",                 "type": "Agree",-                "percentage": 63.6,-                "question": "Q2"+                "value": 7             },             {+                "percentage": 0,                 "percentage_end": 63.6,-                "value": 11,                 "percentage_start": 63.6,+                "question": "Q2",                 "type": "Strongly agree",-                "percentage": 0,-                "question": "Q2"+                "value": 11             },             {+                "percentage": 20,                 "percentage_end": -10,-                "value": 2,                 "percentage_start": -30,+                "question": "Q3",                 "type": "Strongly disagree",-                "percentage": 20,-                "question": "Q3"+                "value": 2             },             {+                "percentage": 0,                 "percentage_end": -10,-                "value": 0,                 "percentage_start": -10,+                "question": "Q3",                 "type": "Disagree",-                "percentage": 0,-                "question": "Q3"+                "value": 0             },             {+                "percentage": 20,                 "percentage_end": 10,-                "value": 2,                 "percentage_start": -10,+                "question": "Q3",                 "type": "Neither agree nor disagree",-                "percentage": 20,-                "question": "Q3"+                "value": 2             },             {+                "percentage": 40,                 "percentage_end": 50,-                "value": 4,                 "percentage_start": 10,+                "question": "Q3",                 "type": "Agree",-                "percentage": 40,-                "question": "Q3"+                "value": 4             },             {+                "percentage": 20,                 "percentage_end": 70,-                "value": 2,                 "percentage_start": 50,+                "question": "Q3",                 "type": "Strongly agree",-                "percentage": 20,-                "question": "Q3"+                "value": 2             },             {+                "percentage": 0,                 "percentage_end": -15.6,-                "value": 0,                 "percentage_start": -15.6,+                "question": "Q4",                 "type": "Strongly disagree",-                "percentage": 0,-                "question": "Q4"+                "value": 0             },             {+                "percentage": 12.5,                 "percentage_end": -3.1,-                "value": 2,                 "percentage_start": -15.6,+                "question": "Q4",                 "type": "Disagree",-                "percentage": 12.5,-                "question": "Q4"+                "value": 2             },             {+                "percentage": 6.3,                 "percentage_end": 3.1,-                "value": 1,                 "percentage_start": -3.1,+                "question": "Q4",                 "type": "Neither agree nor disagree",-                "percentage": 6.3,-                "question": "Q4"+                "value": 1             },             {+                "percentage": 43.8,                 "percentage_end": 46.9,-                "value": 7,                 "percentage_start": 3.1,+                "question": "Q4",                 "type": "Agree",-                "percentage": 43.8,-                "question": "Q4"+                "value": 7             },             {+                "percentage": 37.5,                 "percentage_end": 84.4,-                "value": 6,                 "percentage_start": 46.9,+                "question": "Q4",                 "type": "Strongly agree",-                "percentage": 37.5,-                "question": "Q4"+                "value": 6             },             {+                "percentage": 0,                 "percentage_end": -10.4,-                "value": 0,                 "percentage_start": -10.4,+                "question": "Q5",                 "type": "Strongly disagree",-                "percentage": 0,-                "question": "Q5"+                "value": 0             },             {+                "percentage": 4.2,                 "percentage_end": -6.3,-                "value": 1,                 "percentage_start": -10.4,+                "question": "Q5",                 "type": "Disagree",-                "percentage": 4.2,-                "question": "Q5"+                "value": 1             },             {+                "percentage": 12.5,                 "percentage_end": 6.3,-                "value": 3,                 "percentage_start": -6.3,+                "question": "Q5",                 "type": "Neither agree nor disagree",-                "percentage": 12.5,-                "question": "Q5"+                "value": 3             },             {+                "percentage": 66.7,                 "percentage_end": 72.9,-                "value": 16,                 "percentage_start": 6.3,+                "question": "Q5",                 "type": "Agree",-                "percentage": 66.7,-                "question": "Q5"+                "value": 16             },             {+                "percentage": 16.7,                 "percentage_end": 89.6,-                "value": 4,                 "percentage_start": 72.9,+                "question": "Q5",                 "type": "Strongly agree",-                "percentage": 16.7,-                "question": "Q5"+                "value": 4             },             {+                "percentage": 6.3,                 "percentage_end": -12.5,-                "value": 1,                 "percentage_start": -18.8,+                "question": "Q6",                 "type": "Strongly disagree",-                "percentage": 6.3,-                "question": "Q6"+                "value": 1             },             {+                "percentage": 6.3,                 "percentage_end": -6.3,-                "value": 1,                 "percentage_start": -12.5,+                "question": "Q6",                 "type": "Disagree",-                "percentage": 6.3,-                "question": "Q6"+                "value": 1             },             {+                "percentage": 12.5,                 "percentage_end": 6.3,-                "value": 2,                 "percentage_start": -6.3,+                "question": "Q6",                 "type": "Neither agree nor disagree",-                "percentage": 12.5,-                "question": "Q6"+                "value": 2             },             {+                "percentage": 56.3,                 "percentage_end": 62.5,-                "value": 9,                 "percentage_start": 6.3,+                "question": "Q6",                 "type": "Agree",-                "percentage": 56.3,-                "question": "Q6"+                "value": 9             },             {+                "percentage": 18.8,                 "percentage_end": 81.3,-                "value": 3,                 "percentage_start": 62.5,+                "question": "Q6",                 "type": "Strongly agree",-                "percentage": 18.8,-                "question": "Q6"+                "value": 3             },             {+                "percentage": 0,                 "percentage_end": -10,-                "value": 0,                 "percentage_start": -10,+                "question": "Q7",                 "type": "Strongly disagree",-                "percentage": 0,-                "question": "Q7"+                "value": 0             },             {+                "percentage": 0,                 "percentage_end": -10,-                "value": 0,                 "percentage_start": -10,+                "question": "Q7",                 "type": "Disagree",-                "percentage": 0,-                "question": "Q7"+                "value": 0             },             {+                "percentage": 20,                 "percentage_end": 10,-                "value": 1,                 "percentage_start": -10,+                "question": "Q7",                 "type": "Neither agree nor disagree",-                "percentage": 20,-                "question": "Q7"+                "value": 1             },             {+                "percentage": 80,                 "percentage_end": 90,-                "value": 4,                 "percentage_start": 10,+                "question": "Q7",                 "type": "Agree",-                "percentage": 80,-                "question": "Q7"+                "value": 4             },             {+                "percentage": 0,                 "percentage_end": 90,-                "value": 0,                 "percentage_start": 90,+                "question": "Q7",                 "type": "Strongly agree",-                "percentage": 0,-                "question": "Q7"+                "value": 0             },             {+                "percentage": 0,                 "percentage_end": 0,-                "value": 0,                 "percentage_start": 0,+                "question": "Q8",                 "type": "Strongly disagree",-                "percentage": 0,-                "question": "Q8"+                "value": 0             },             {+                "percentage": 0,                 "percentage_end": 0,-                "value": 0,                 "percentage_start": 0,+                "question": "Q8",                 "type": "Disagree",-                "percentage": 0,-                "question": "Q8"+                "value": 0             },             {+                "percentage": 0,                 "percentage_end": 0,-                "value": 0,                 "percentage_start": 0,+                "question": "Q8",                 "type": "Neither agree nor disagree",-                "percentage": 0,-                "question": "Q8"+                "value": 0             },             {+                "percentage": 0,                 "percentage_end": 0,-                "value": 0,                 "percentage_start": 0,+                "question": "Q8",                 "type": "Agree",-                "percentage": 0,-                "question": "Q8"+                "value": 0             },             {+                "percentage": 100,                 "percentage_end": 100,-                "value": 2,                 "percentage_start": 0,+                "question": "Q8",                 "type": "Strongly agree",-                "percentage": 100,-                "question": "Q8"+                "value": 2             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A diverging stacked bar chart for sentiments towards a set of eight questions, displayed as percentages with neutral responses straddling the 0% mark.",     "encoding": {-        "x2": {-            "field": "percentage_end"-        },         "color": {             "field": "type",+            "legend": {+                "title": "Response"+            },             "scale": {                 "domain": [                     "Strongly disagree",@@ -348,29 +348,29 @@                 ],                 "type": "ordinal"             },-            "type": "nominal",-            "legend": {-                "title": "Response"-            }+            "type": "nominal"         },         "x": {-            "field": "percentage_start",-            "type": "quantitative",             "axis": {                 "title": "Percentage"-            }+            },+            "field": "percentage_start",+            "type": "quantitative"         },+        "x2": {+            "field": "percentage_end"+        },         "y": {-            "field": "question",-            "type": "nominal",             "axis": {+                "domain": false,                 "minExtent": 60,                 "offset": 5,-                "domain": false,-                "title": "Question",-                "ticks": false-            }+                "ticks": false,+                "title": "Question"+            },+            "field": "question",+            "type": "nominal"         }     },-    "description": "A diverging stacked bar chart for sentiments towards a set of eight questions, displayed as percentages with neutral responses straddling the 0% mark."+    "mark": "bar" }
tests/specs/gallery/bar/bar12.vl view
@@ -1,10 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {             "label": {-                "dx": 3,                 "align": "left",-                "baseline": "middle"+                "baseline": "middle",+                "dx": 3             }         }     },@@ -24,33 +25,32 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A simple bar chart with embedded data labels.",+    "encoding": {+        "x": {+            "field": "b",+            "type": "quantitative"+        },+        "y": {+            "field": "a",+            "type": "ordinal"+        }+    },     "layer": [         {             "mark": "bar"         },         {-            "mark": {-                "style": "label",-                "type": "text"-            },             "encoding": {                 "text": {                     "field": "b",                     "type": "quantitative"                 }+            },+            "mark": {+                "style": "label",+                "type": "text"             }         }-    ],-    "encoding": {-        "x": {-            "field": "b",-            "type": "quantitative"-        },-        "y": {-            "field": "a",-            "type": "ordinal"-        }-    },-    "description": "A simple bar chart with embedded data labels."+    ] }
tests/specs/gallery/bar/bar13.vl view
@@ -1,208 +1,204 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": {-        "type": "point",-        "filled": true-    },     "data": {         "values": [             {-                "country": "United States",                 "animal": "cattle",-                "col": 1+                "col": 1,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 2+                "col": 2,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 3+                "col": 3,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 4+                "col": 4,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 5+                "col": 5,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 6+                "col": 6,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 7+                "col": 7,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 8+                "col": 8,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 9+                "col": 9,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 1+                "col": 1,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 2+                "col": 2,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 3+                "col": 3,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 4+                "col": 4,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 5+                "col": 5,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 6+                "col": 6,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 1+                "col": 1,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 2+                "col": 2,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 3+                "col": 3,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 4+                "col": 4,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 5+                "col": 5,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 6+                "col": 6,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 7+                "col": 7,+                "country": "United States"             },             {-                "country": "Great Britain",                 "animal": "cattle",-                "col": 1+                "col": 1,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "cattle",-                "col": 2+                "col": 2,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "cattle",-                "col": 3+                "col": 3,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "pigs",-                "col": 1+                "col": 1,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "pigs",-                "col": 2+                "col": 2,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 1+                "col": 1,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 2+                "col": 2,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 3+                "col": 3,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 4+                "col": 4,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 5+                "col": 5,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 6+                "col": 6,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 7+                "col": 7,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 8+                "col": 8,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 9+                "col": 9,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 10+                "col": 10,+                "country": "Great Britain"             }         ]     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Isotype bar chart inspired by this Only An Ocean Between, 1943. Population Live Stock, p.13.",     "encoding": {         "color": {             "field": "animal",+            "legend": null,             "scale": {                 "domain": [                     "person",@@ -217,17 +213,21 @@                     "rgb(91,131,149)"                 ]             },-            "type": "nominal",-            "legend": null-        },-        "size": {-            "value": 200+            "type": "nominal"         },         "opacity": {             "value": 1         },+        "row": {+            "field": "country",+            "header": {+                "title": null+            },+            "type": "nominal"+        },         "shape": {             "field": "animal",+            "legend": null,             "scale": {                 "domain": [                     "person",@@ -242,26 +242,26 @@                     "M-4.1 -0.5c0.2 0 0.2 0.2 0.5 0.2c0.3 0 0.3 -0.2 0.5 -0.2c0.2 0 0.2 0.2 0.4 0.2c0.2 0 0.2 -0.2 0.5 -0.2c0.2 0 0.2 0.2 0.4 0.2c0.2 0 0.2 -0.2 0.4 -0.2c0.1 0 0.2 0.2 0.4 0.1c0.2 0 0.2 -0.2 0.4 -0.3c0.1 0 0.1 -0.1 0.4 0c0.3 0 0.3 -0.4 0.6 -0.4c0.3 0 0.6 -0.3 0.7 -0.2c0.1 0.1 1.4 1 1.3 1.4c-0.1 0.4 -0.3 0.3 -0.4 0.3c-0.1 0 -0.5 -0.4 -0.7 -0.2c-0.3 0.2 -0.1 0.4 -0.2 0.6c-0.1 0.1 -0.2 0.2 -0.3 0.4c0 0.2 0.1 0.3 0 0.5c-0.1 0.2 -0.3 0.2 -0.3 0.5c0 0.3 -0.2 0.3 -0.3 0.6c-0.1 0.2 0 0.3 -0.1 0.5c-0.1 0.2 -0.1 0.2 -0.2 0.3c-0.1 0.1 0.3 1.1 0.3 1.1l-0.3 0c0 0 -0.3 -0.9 -0.3 -1c0 -0.1 -0.1 -0.2 -0.3 -0.2c-0.2 0 -0.3 0.1 -0.4 0.4c0 0.3 -0.2 0.8 -0.2 0.8l-0.3 0l0.3 -1c0 0 0.1 -0.6 -0.2 -0.5c-0.3 0.1 -0.2 -0.1 -0.4 -0.1c-0.2 -0.1 -0.3 0.1 -0.4 0c-0.2 -0.1 -0.3 0.1 -0.5 0c-0.2 -0.1 -0.1 0 -0.3 0.3c-0.2 0.3 -0.4 0.3 -0.4 0.3l0.2 1.1l-0.3 0l-0.2 -1.1c0 0 -0.4 -0.6 -0.5 -0.4c-0.1 0.3 -0.1 0.4 -0.3 0.4c-0.1 -0.1 -0.2 1.1 -0.2 1.1l-0.3 0l0.2 -1.1c0 0 -0.3 -0.1 -0.3 -0.5c0 -0.3 0.1 -0.5 0.1 -0.7c0.1 -0.2 -0.1 -1 -0.2 -1.1c-0.1 -0.2 -0.2 -0.8 -0.2 -0.8c0 0 -0.1 -0.5 0.4 -0.8z"                 ]             },-            "type": "nominal",-            "legend": null-        },-        "row": {-            "field": "country",-            "header": {-                "title": null-            },             "type": "nominal"         },+        "size": {+            "value": 200+        },         "x": {+            "axis": null,             "field": "col",-            "type": "ordinal",-            "axis": null+            "type": "ordinal"         },         "y": {+            "axis": null,             "field": "animal",-            "type": "ordinal",-            "axis": null+            "type": "ordinal"         }     },-    "description": "Isotype bar chart inspired by this Only An Ocean Between, 1943. Population Live Stock, p.13."+    "height": 200,+    "mark": {+        "filled": true,+        "type": "point"+    },+    "width": 800 }
tests/specs/gallery/bar/bar14.vl view
@@ -1,231 +1,201 @@ {-    "transform": [-        {-            "as": "emoji",-            "calculate": "{'cattle': '🐄', 'pigs': '🐖', 'sheep': '🐏'}[datum.animal]"-        },-        {-            "window": [-                {-                    "op": "rank",-                    "as": "rank"-                }-            ],-            "groupby": [-                "country",-                "animal"-            ]-        }-    ],-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": {-        "type": "text",-        "baseline": "middle"-    },     "data": {         "values": [             {-                "country": "United States",                 "animal": "cattle",-                "col": 1+                "col": 1,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 2+                "col": 2,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 3+                "col": 3,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 4+                "col": 4,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 5+                "col": 5,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 6+                "col": 6,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 7+                "col": 7,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 8+                "col": 8,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "cattle",-                "col": 9+                "col": 9,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 1+                "col": 1,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 2+                "col": 2,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 3+                "col": 3,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 4+                "col": 4,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 5+                "col": 5,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "pigs",-                "col": 6+                "col": 6,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 1+                "col": 1,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 2+                "col": 2,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 3+                "col": 3,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 4+                "col": 4,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 5+                "col": 5,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 6+                "col": 6,+                "country": "United States"             },             {-                "country": "United States",                 "animal": "sheep",-                "col": 7+                "col": 7,+                "country": "United States"             },             {-                "country": "Great Britain",                 "animal": "cattle",-                "col": 1+                "col": 1,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "cattle",-                "col": 2+                "col": 2,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "cattle",-                "col": 3+                "col": 3,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "pigs",-                "col": 1+                "col": 1,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "pigs",-                "col": 2+                "col": 2,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 1+                "col": 1,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 2+                "col": 2,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 3+                "col": 3,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 4+                "col": 4,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 5+                "col": 5,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 6+                "col": 6,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 7+                "col": 7,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 8+                "col": 8,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 9+                "col": 9,+                "country": "Great Britain"             },             {-                "country": "Great Britain",                 "animal": "sheep",-                "col": 10+                "col": 10,+                "country": "Great Britain"             }         ]     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Isotype bar chart using emojis for symbols",     "encoding": {-        "size": {-            "value": 65-        },-        "text": {-            "field": "emoji",-            "type": "nominal"-        },         "row": {             "field": "country",             "header": {@@ -233,17 +203,47 @@             },             "type": "nominal"         },+        "size": {+            "value": 65+        },+        "text": {+            "field": "emoji",+            "type": "nominal"+        },         "x": {+            "axis": null,             "field": "rank",-            "type": "ordinal",-            "axis": null+            "type": "ordinal"         },         "y": {+            "axis": null,             "field": "animal",             "sort": null,-            "type": "nominal",-            "axis": null+            "type": "nominal"         }     },-    "description": "Isotype bar chart using emojis for symbols"+    "height": 200,+    "mark": {+        "baseline": "middle",+        "type": "text"+    },+    "transform": [+        {+            "as": "emoji",+            "calculate": "{'cattle': '🐄', 'pigs': '🐖', 'sheep': '🐏'}[datum.animal]"+        },+        {+            "groupby": [+                "country",+                "animal"+            ],+            "window": [+                {+                    "as": "rank",+                    "op": "rank"+                }+            ]+        }+    ],+    "width": 800 }
tests/specs/gallery/bar/bar2.vl view
@@ -1,16 +1,13 @@ {-    "mark": {-        "binSpacing": 0,-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Simple histogram of IMDB ratings.",     "encoding": {         "x": {-            "field": "IMDB_Rating",             "bin": true,+            "field": "IMDB_Rating",             "type": "quantitative"         },         "y": {@@ -18,5 +15,8 @@             "type": "quantitative"         }     },-    "description": "Simple histogram of IMDB ratings."+    "mark": {+        "binSpacing": 0,+        "type": "bar"+    } }
tests/specs/gallery/bar/bar3.vl view
@@ -1,25 +1,17 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        }-    ],-    "height": {-        "step": 17-    },-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A bar chart showing the US population distribution of age groups in 2000.",     "encoding": {         "x": {-            "field": "people",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "title": "population"-            }+            },+            "field": "people",+            "type": "quantitative"         },         "y": {             "field": "age",@@ -27,5 +19,13 @@             "type": "ordinal"         }     },-    "description": "A bar chart showing the US population distribution of age groups in 2000."+    "height": {+        "step": 17+    },+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        }+    ] }
tests/specs/gallery/bar/bar4.vl view
@@ -1,29 +1,17 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        },-        {-            "as": "gender",-            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "view": {-            "stroke": null-        },         "axis": {             "domainWidth": 1+        },+        "view": {+            "stroke": null         }     },-    "mark": "bar",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "width": {-        "step": 12-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Grouped bar chart showing population structure by age and gender.",     "encoding": {         "color": {             "field": "gender",@@ -35,26 +23,38 @@             },             "type": "nominal"         },-        "x": {-            "field": "gender",-            "type": "nominal",-            "axis": {-                "title": null-            }-        },         "column": {             "field": "age",             "type": "ordinal"         },+        "x": {+            "axis": {+                "title": null+            },+            "field": "gender",+            "type": "nominal"+        },         "y": {-            "field": "people",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "grid": false,                 "title": "population"-            }+            },+            "field": "people",+            "type": "quantitative"         }     },-    "description": "Grouped bar chart showing population structure by age and gender."+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        },+        {+            "as": "gender",+            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"+        }+    ],+    "width": {+        "step": 12+    } }
tests/specs/gallery/bar/bar5.vl view
@@ -1,12 +1,15 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Seattle weather stacked bar chart",     "encoding": {         "color": {             "field": "weather",+            "legend": {+                "title": "Weather type"+            },             "scale": {                 "domain": [                     "sun",@@ -23,23 +26,20 @@                     "#9467bd"                 ]             },-            "type": "nominal",-            "legend": {-                "title": "Weather type"-            }+            "type": "nominal"         },         "x": {-            "field": "date",-            "timeUnit": "month",-            "type": "ordinal",             "axis": {                 "title": "Month of the year"-            }+            },+            "field": "date",+            "timeUnit": "month",+            "type": "ordinal"         },         "y": {             "aggregate": "count",             "type": "quantitative"         }     },-    "description": "Seattle weather stacked bar chart"+    "mark": "bar" }
tests/specs/gallery/bar/bar6.vl view
@@ -1,17 +1,17 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Barley crop yields as a horizontal stacked bar chart",     "encoding": {         "color": {             "field": "site",             "type": "nominal"         },         "x": {-            "field": "yield",             "aggregate": "sum",+            "field": "yield",             "type": "quantitative"         },         "y": {@@ -19,5 +19,5 @@             "type": "nominal"         }     },-    "description": "Barley crop yields as a horizontal stacked bar chart"+    "mark": "bar" }
tests/specs/gallery/bar/bar6order.vl view
@@ -1,27 +1,27 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "site",             "type": "nominal"         },-        "x": {-            "field": "yield",+        "order": {             "aggregate": "sum",+            "field": "yield",             "type": "quantitative"         },-        "order": {-            "field": "yield",+        "x": {             "aggregate": "sum",+            "field": "yield",             "type": "quantitative"         },         "y": {             "field": "variety",             "type": "nominal"         }-    }+    },+    "mark": "bar" }
tests/specs/gallery/bar/bar6sort.vl view
@@ -1,31 +1,31 @@ {-    "transform": [-        {-            "as": "siteOrder",-            "calculate": "if(datum.site === 'University Farm', 0, if(datum.site === 'Grand Rapids', 1, 2))"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "site",             "type": "nominal"         },+        "order": {+            "field": "siteOrder"+        },         "x": {-            "field": "yield",             "aggregate": "sum",+            "field": "yield",             "type": "quantitative"         },-        "order": {-            "field": "siteOrder"-        },         "y": {             "field": "variety",             "type": "nominal"         }-    }+    },+    "mark": "bar",+    "transform": [+        {+            "as": "siteOrder",+            "calculate": "if(datum.site === 'University Farm', 0, if(datum.site === 'Grand Rapids', 1, 2))"+        }+    ] }
tests/specs/gallery/bar/bar7.vl view
@@ -1,21 +1,9 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        },-        {-            "as": "gender",-            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "width": {-        "step": 17-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Population structure as a normalised stacked bar chart.",     "encoding": {         "color": {             "field": "gender",@@ -32,14 +20,26 @@             "type": "ordinal"         },         "y": {-            "field": "people",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "title": "Population"             },-            "stack": "normalize"+            "field": "people",+            "stack": "normalize",+            "type": "quantitative"         }     },-    "description": "Population structure as a normalised stacked bar chart."+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        },+        {+            "as": "gender",+            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"+        }+    ],+    "width": {+        "step": 17+    } }
tests/specs/gallery/bar/bar8.vl view
@@ -1,37 +1,37 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "start": 1,                 "end": 3,+                "start": 1,                 "task": "A"             },             {-                "start": 3,                 "end": 8,+                "start": 3,                 "task": "B"             },             {-                "start": 8,                 "end": 10,+                "start": 8,                 "task": "C"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A simple bar chart with ranged data (aka Gantt Chart).",     "encoding": {-        "x2": {-            "field": "end"-        },         "x": {             "field": "start",             "type": "quantitative"         },+        "x2": {+            "field": "end"+        },         "y": {             "field": "task",             "type": "ordinal"         }     },-    "description": "A simple bar chart with ranged data (aka Gantt Chart)."+    "mark": "bar" }
tests/specs/gallery/bar/bar9.vl view
@@ -1,22 +1,22 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "color": "red",-                "b": 28+                "b": 28,+                "color": "red"             },             {-                "color": "green",-                "b": 55+                "b": 55,+                "color": "green"             },             {-                "color": "blue",-                "b": 43+                "b": 43,+                "color": "blue"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A bar chart that directly encodes color names in the data.",     "encoding": {         "color": {             "field": "color",@@ -32,5 +32,5 @@             "type": "quantitative"         }     },-    "description": "A bar chart that directly encodes color names in the data."+    "mark": "bar" }
tests/specs/gallery/bar/baraxisspacesaving.vl view
@@ -1,46 +1,46 @@ {-    "height": {-        "step": 50-    },-    "mark": {-        "cornerRadiusEnd": 2,-        "yOffset": 5,-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Bar Chart with a spacing-saving y-axis",     "encoding": {         "x": {             "aggregate": "count",-            "type": "quantitative",             "axis": {                 "grid": false-            }+            },+            "type": "quantitative"         },         "y": {-            "field": "Origin",-            "scale": {-                "padding": 0-            },-            "type": "nominal",             "axis": {-                "titleAlign": "left",                 "bandPosition": 0,-                "titleX": 5,                 "domain": false,-                "labelOffset": -15,-                "titleY": -5,-                "labelPadding": -5,-                "labelBaseline": "middle",                 "grid": true,                 "labelAlign": "left",+                "labelBaseline": "middle",+                "labelOffset": -15,+                "labelPadding": -5,                 "ticks": false,-                "titleAngle": 0+                "titleAlign": "left",+                "titleAngle": 0,+                "titleX": 5,+                "titleY": -5             },-            "band": 0.5+            "band": 0.5,+            "field": "Origin",+            "scale": {+                "padding": 0+            },+            "type": "nominal"         }     },-    "description": "Bar Chart with a spacing-saving y-axis"+    "height": {+        "step": 50+    },+    "mark": {+        "cornerRadiusEnd": 2,+        "type": "bar",+        "yOffset": 5+    } }
tests/specs/gallery/bar/barnegative.vl view
@@ -1,5 +1,5 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -40,31 +40,31 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A bar chart with negative values. We can hide the axis domain line, and instead use a conditional grid color to draw a zero baseline.",     "encoding": {         "x": {-            "field": "a",-            "type": "ordinal",             "axis": {-                "labelAngle": 0,                 "domain": false,+                "labelAngle": 0,                 "labelPadding": 4,                 "ticks": false-            }+            },+            "field": "a",+            "type": "ordinal"         },         "y": {-            "field": "b",-            "type": "quantitative",             "axis": {                 "gridColor": {-                    "value": "#ddd",                     "condition": {-                        "value": "black",-                        "test": "datum.value === 0"-                    }+                        "test": "datum.value === 0",+                        "value": "black"+                    },+                    "value": "#ddd"                 }-            }+            },+            "field": "b",+            "type": "quantitative"         }     },-    "description": "A bar chart with negative values. We can hide the axis domain line, and instead use a conditional grid color to draw a zero baseline."+    "mark": "bar" }
tests/specs/gallery/bar/explicitbins.vl view
@@ -1,64 +1,64 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "binEnd": 10,-                "count": 7,-                "binStart": 8+                "binStart": 8,+                "count": 7             },             {                 "binEnd": 12,-                "count": 29,-                "binStart": 10+                "binStart": 10,+                "count": 29             },             {                 "binEnd": 14,-                "count": 71,-                "binStart": 12+                "binStart": 12,+                "count": 71             },             {                 "binEnd": 16,-                "count": 127,-                "binStart": 14+                "binStart": 14,+                "count": 127             },             {                 "binEnd": 18,-                "count": 94,-                "binStart": 16+                "binStart": 16,+                "count": 94             },             {                 "binEnd": 20,-                "count": 54,-                "binStart": 18+                "binStart": 18,+                "count": 54             },             {                 "binEnd": 22,-                "count": 17,-                "binStart": 20+                "binStart": 20,+                "count": 17             },             {                 "binEnd": 24,-                "count": 5,-                "binStart": 22+                "binStart": 22,+                "count": 5             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {-        "x2": {-            "field": "binEnd"-        },         "x": {-            "field": "binStart",             "bin": {                 "step": 2             },+            "field": "binStart",             "type": "quantitative"         },+        "x2": {+            "field": "binEnd"+        },         "y": {             "field": "count",             "type": "quantitative"         }-    }+    },+    "mark": "bar" }
tests/specs/gallery/bar/initialletter.vl view
@@ -1,9 +1,30 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"+    },+    "description": "Using `labelExpr` to show only initial letters of month names.",+    "encoding": {+        "x": {+            "axis": {+                "labelAlign": "left",+                "labelExpr": "datum.label[0]"+            },+            "field": "date",+            "timeUnit": "month",+            "type": "temporal"+        },+        "y": {+            "aggregate": "mean",+            "field": "precipitation",+            "type": "quantitative"+        }+    },     "height": 300,     "mark": {-        "cornerRadius": 10,-        "strokeWidth": 4,+        "blend": "difference",         "color": {+            "gradient": "linear",             "stops": [                 {                     "color": "orange",@@ -13,36 +34,15 @@                     "color": "cyan",                     "offset": 1                 }-            ],-            "gradient": "linear"+            ]         },-        "blend": "difference",+        "cornerRadius": 10,         "stroke": "yellow",+        "strokeWidth": 4,         "tooltip": {             "content": "data"         },         "type": "bar"     },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"-    },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x": {-            "field": "date",-            "timeUnit": "month",-            "type": "temporal",-            "axis": {-                "labelExpr": "datum.label[0]",-                "labelAlign": "left"-            }-        },-        "y": {-            "field": "precipitation",-            "aggregate": "mean",-            "type": "quantitative"-        }-    },-    "description": "Using `labelExpr` to show only initial letters of month names."+    "width": 400 }
tests/specs/gallery/bar/labeloverlay.vl view
@@ -1,26 +1,39 @@ {-    "transform": [-        {-            "as": "genre",-            "calculate": "isValid(datum.Major_Genre)? datum.Major_Genre : 'unclassified'"+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/movies.json"+    },+    "description": "Bar chart with label overlay",+    "encoding": {+        "y": {+            "axis": null,+            "field": "genre",+            "sort": [+                "Action",+                "Adventure",+                "Comedy",+                "Black Comedy",+                "Romantic Comedy",+                "Concert/Performance",+                "Documentary",+                "Drama",+                "Horror",+                "Musical",+                "Thriller/Suspense",+                "Western",+                "unclassified"+            ],+            "type": "nominal"         }-    ],+    },     "height": {         "step": 16     },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/movies.json"-    },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "color": "#ddd",-                "type": "bar"-            },             "encoding": {                 "x": {+                    "aggregate": "mean",                     "field": "IMDB_Rating",                     "scale": {                         "domain": [@@ -28,51 +41,38 @@                             10                         ]                     },-                    "aggregate": "mean",                     "title": "Mean IMDB Ratings",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "#ddd",+                "type": "bar"             }         },         {-            "mark": {-                "dx": 5,-                "align": "center",-                "type": "text"-            },             "encoding": {-                "text": {-                    "field": "genre",-                    "type": "nominal"-                },                 "detail": {                     "aggregate": "count",                     "type": "quantitative"+                },+                "text": {+                    "field": "genre",+                    "type": "nominal"                 }+            },+            "mark": {+                "align": "center",+                "dx": 5,+                "type": "text"             }         }     ],-    "encoding": {-        "y": {-            "field": "genre",-            "sort": [-                "Action",-                "Adventure",-                "Comedy",-                "Black Comedy",-                "Romantic Comedy",-                "Concert/Performance",-                "Documentary",-                "Drama",-                "Horror",-                "Musical",-                "Thriller/Suspense",-                "Western",-                "unclassified"-            ],-            "type": "nominal",-            "axis": null+    "transform": [+        {+            "as": "genre",+            "calculate": "isValid(datum.Major_Genre)? datum.Major_Genre : 'unclassified'"         }-    },-    "description": "Bar chart with label overlay"+    ],+    "width": 200 }
tests/specs/gallery/bar/layer_bar_labels_grey.vl view
@@ -1,20 +1,23 @@ {-    "height": {-        "step": 16-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "encoding": {+        "y": {+            "axis": null,+            "field": "Major_Genre",+            "type": "nominal"+        }+    },+    "height": {+        "step": 16+    },     "layer": [         {-            "mark": {-                "color": "#ddd",-                "type": "bar"-            },             "encoding": {                 "x": {+                    "aggregate": "mean",                     "field": "IMDB_Rating",                     "scale": {                         "domain": [@@ -22,35 +25,32 @@                             10                         ]                     },-                    "aggregate": "mean",                     "title": "Mean IMDB Ratings",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "#ddd",+                "type": "bar"             }         },         {-            "mark": {-                "align": "left",-                "x": 5,-                "type": "text"-            },             "encoding": {-                "text": {-                    "field": "Major_Genre",-                    "type": "nominal"-                },                 "detail": {                     "aggregate": "count",                     "type": "quantitative"+                },+                "text": {+                    "field": "Major_Genre",+                    "type": "nominal"                 }+            },+            "mark": {+                "align": "left",+                "type": "text",+                "x": 5             }         }     ],-    "encoding": {-        "y": {-            "field": "Major_Genre",-            "type": "nominal",-            "axis": null-        }-    }+    "width": 200 }
tests/specs/gallery/bar/logscaled.vl view
@@ -1,24 +1,5 @@ {-    "transform": [-        {-            "as": "logX",-            "calculate": "log(datum.x)/log(10)"-        },-        {-            "as": "binLogX",-            "field": "logX",-            "bin": true-        },-        {-            "as": "x1",-            "calculate": "pow(10,datum.binLogX)"-        },-        {-            "as": "x2",-            "calculate": "pow(10,datum.binLogX_end)"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -56,26 +37,45 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Log-scaled Histogram (may improve after https://github.com/vega/vega-lite/issues/4792)",     "encoding": {-        "x2": {-            "field": "x2"-        },         "x": {+            "axis": {+                "tickCount": 5+            },             "field": "x1",             "scale": {                 "base": 10,                 "type": "log"             },-            "type": "quantitative",-            "axis": {-                "tickCount": 5-            }+            "type": "quantitative"         },+        "x2": {+            "field": "x2"+        },         "y": {             "aggregate": "count",             "type": "quantitative"         }     },-    "description": "Log-scaled Histogram (may improve after https://github.com/vega/vega-lite/issues/4792)"+    "mark": "bar",+    "transform": [+        {+            "as": "logX",+            "calculate": "log(datum.x)/log(10)"+        },+        {+            "as": "binLogX",+            "bin": true,+            "field": "logX"+        },+        {+            "as": "x1",+            "calculate": "pow(10,datum.binLogX)"+        },+        {+            "as": "x2",+            "calculate": "pow(10,datum.binLogX_end)"+        }+    ] }
tests/specs/gallery/bar/signedpopulation.vl view
@@ -1,61 +1,61 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        },-        {-            "as": "gender",-            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"-        },-        {-            "as": "signedPeople",-            "calculate": "datum.sex == 2 ? datum.people : -datum.people"-        }-    ],-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "view": {-            "stroke": null-        },         "axis": {             "grid": false+        },+        "view": {+            "stroke": null         }     },-    "mark": "bar",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "gender",+            "legend": {+                "orient": "top",+                "title": ""+            },             "scale": {                 "range": [                     "#675193",                     "#ca8861"                 ]             },-            "type": "nominal",-            "legend": {-                "orient": "top",-                "title": ""-            }+            "type": "nominal"         },         "x": {-            "field": "signedPeople",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "format": "s",                 "title": "Population"-            }+            },+            "field": "signedPeople",+            "type": "quantitative"         },         "y": {+            "axis": null,             "field": "age",             "sort": "descending",-            "type": "ordinal",-            "axis": null+            "type": "ordinal"         }-    }+    },+    "height": 200,+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        },+        {+            "as": "gender",+            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"+        },+        {+            "as": "signedPeople",+            "calculate": "datum.sex == 2 ? datum.people : -datum.people"+        }+    ],+    "width": 300 }
tests/specs/gallery/bar/wilkinsondotplot.vl view
@@ -1,28 +1,10 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "rank",-                    "as": "id",-                    "field": "rank"-                }-            ],-            "groupby": [-                "data"-            ]-        }-    ],-    "height": 100,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": {-        "opacity": 1,-        "type": "circle"-    },     "data": {         "values": [             {@@ -90,18 +72,36 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A Wilkinson dot plot",     "encoding": {         "x": {             "field": "data",             "type": "ordinal"         },         "y": {+            "axis": null,             "field": "id",             "sort": "descending",-            "type": "ordinal",-            "axis": null+            "type": "ordinal"         }     },-    "description": "A Wilkinson dot plot"+    "height": 100,+    "mark": {+        "opacity": 1,+        "type": "circle"+    },+    "transform": [+        {+            "groupby": [+                "data"+            ],+            "window": [+                {+                    "as": "id",+                    "field": "rank",+                    "op": "rank"+                }+            ]+        }+    ] }
tests/specs/gallery/dist/dist1.vl view
@@ -1,16 +1,13 @@ {-    "mark": {-        "binSpacing": 0,-        "type": "bar"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Simple histogram of IMDB ratings.",     "encoding": {         "x": {-            "field": "IMDB_Rating",             "bin": true,+            "field": "IMDB_Rating",             "type": "quantitative"         },         "y": {@@ -18,5 +15,8 @@             "type": "quantitative"         }     },-    "description": "Simple histogram of IMDB ratings."+    "mark": {+        "binSpacing": 0,+        "type": "bar"+    } }
tests/specs/gallery/dist/dist2.vl view
@@ -1,30 +1,9 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "count",-                    "as": "cumulativeCount",-                    "field": "count"-                }-            ],-            "sort": [-                {-                    "field": "IMDB_Rating",-                    "order": "ascending"-                }-            ],-            "frame": [-                null,-                0-            ]-        }-    ],-    "mark": "area",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Cumulative frequency distribution",     "encoding": {         "x": {             "field": "IMDB_Rating",@@ -35,5 +14,26 @@             "type": "quantitative"         }     },-    "description": "Cumulative frequency distribution"+    "mark": "area",+    "transform": [+        {+            "frame": [+                null,+                0+            ],+            "sort": [+                {+                    "field": "IMDB_Rating",+                    "order": "ascending"+                }+            ],+            "window": [+                {+                    "as": "cumulativeCount",+                    "field": "count",+                    "op": "count"+                }+            ]+        }+    ] }
tests/specs/gallery/dist/dist3.vl view
@@ -1,32 +1,73 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/movies.json"+    },+    "description": "A layered histogram and cumulative histogram.",+    "encoding": {+        "x": {+            "axis": {+                "title": "IMDB rating"+            },+            "field": "bin_IMDB_Rating",+            "scale": {+                "zero": false+            },+            "type": "quantitative"+        },+        "x2": {+            "field": "bin_IMDB_Rating_end"+        }+    },+    "layer": [+        {+            "encoding": {+                "y": {+                    "field": "cumulativeCount",+                    "type": "quantitative"+                }+            },+            "mark": "bar"+        },+        {+            "encoding": {+                "y": {+                    "field": "count",+                    "type": "quantitative"+                }+            },+            "mark": {+                "color": "yellow",+                "opacity": 0.5,+                "type": "bar"+            }+        }+    ],     "transform": [         {             "as": "bin_IMDB_Rating",-            "field": "IMDB_Rating",-            "bin": true+            "bin": true,+            "field": "IMDB_Rating"         },         {-            "groupby": [-                "bin_IMDB_Rating",-                "bin_IMDB_Rating_end"-            ],             "aggregate": [                 {-                    "op": "count",-                    "as": "count"+                    "as": "count",+                    "op": "count"                 }+            ],+            "groupby": [+                "bin_IMDB_Rating",+                "bin_IMDB_Rating_end"             ]         },         {             "filter": "datum.bin_IMDB_Rating !== null"         },         {-            "window": [-                {-                    "op": "sum",-                    "as": "cumulativeCount",-                    "field": "count"-                }+            "frame": [+                null,+                0             ],             "sort": [                 {@@ -34,54 +75,13 @@                     "order": "ascending"                 }             ],-            "frame": [-                null,-                0-            ]-        }-    ],-    "data": {-        "url": "https://vega.github.io/vega-lite/data/movies.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "layer": [-        {-            "mark": "bar",-            "encoding": {-                "y": {-                    "field": "cumulativeCount",-                    "type": "quantitative"-                }-            }-        },-        {-            "mark": {-                "color": "yellow",-                "opacity": 0.5,-                "type": "bar"-            },-            "encoding": {-                "y": {+            "window": [+                {+                    "as": "cumulativeCount",                     "field": "count",-                    "type": "quantitative"+                    "op": "sum"                 }-            }-        }-    ],-    "encoding": {-        "x2": {-            "field": "bin_IMDB_Rating_end"-        },-        "x": {-            "field": "bin_IMDB_Rating",-            "scale": {-                "zero": false-            },-            "type": "quantitative",-            "axis": {-                "title": "IMDB rating"-            }+            ]         }-    },-    "description": "A layered histogram and cumulative histogram."+    ] }
tests/specs/gallery/dist/dist4.vl view
@@ -1,99 +1,68 @@ {-    "transform": [-        {-            "groupby": [-                "age"-            ],-            "aggregate": [-                {-                    "op": "min",-                    "as": "lowerWhisker",-                    "field": "people"-                },-                {-                    "op": "q1",-                    "as": "lowerBox",-                    "field": "people"-                },-                {-                    "op": "median",-                    "as": "midBox",-                    "field": "people"-                },-                {-                    "op": "q3",-                    "as": "upperBox",-                    "field": "people"-                },-                {-                    "op": "max",-                    "as": "upperWhisker",-                    "field": "people"-                }-            ]-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A vertical 2D box plot showing median, min, and max in the US population distribution of age groups in 2000.",+    "encoding": {+        "x": {+            "field": "age",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": {-                "style": "boxWhisker",-                "type": "rule"-            },             "encoding": {-                "y2": {-                    "field": "lowerBox"-                },                 "y": {-                    "field": "lowerWhisker",-                    "type": "quantitative",                     "axis": {                         "title": "Population"-                    }+                    },+                    "field": "lowerWhisker",+                    "type": "quantitative"+                },+                "y2": {+                    "field": "lowerBox"                 }-            }-        },-        {+            },             "mark": {                 "style": "boxWhisker",                 "type": "rule"-            },+            }+        },+        {             "encoding": {-                "y2": {-                    "field": "upperWhisker"-                },                 "y": {                     "field": "upperBox",                     "type": "quantitative"+                },+                "y2": {+                    "field": "upperWhisker"                 }+            },+            "mark": {+                "style": "boxWhisker",+                "type": "rule"             }         },         {-            "mark": {-                "style": "box",-                "type": "bar"-            },             "encoding": {                 "size": {                     "value": 5                 },-                "y2": {-                    "field": "upperBox"-                },                 "y": {                     "field": "lowerBox",                     "type": "quantitative"+                },+                "y2": {+                    "field": "upperBox"                 }+            },+            "mark": {+                "style": "box",+                "type": "bar"             }         },         {-            "mark": {-                "style": "boxMid",-                "type": "tick"-            },             "encoding": {                 "color": {                     "value": "white"@@ -105,14 +74,45 @@                     "field": "midBox",                     "type": "quantitative"                 }+            },+            "mark": {+                "style": "boxMid",+                "type": "tick"             }         }     ],-    "encoding": {-        "x": {-            "field": "age",-            "type": "ordinal"+    "transform": [+        {+            "aggregate": [+                {+                    "as": "lowerWhisker",+                    "field": "people",+                    "op": "min"+                },+                {+                    "as": "lowerBox",+                    "field": "people",+                    "op": "q1"+                },+                {+                    "as": "midBox",+                    "field": "people",+                    "op": "median"+                },+                {+                    "as": "upperBox",+                    "field": "people",+                    "op": "q3"+                },+                {+                    "as": "upperWhisker",+                    "field": "people",+                    "op": "max"+                }+            ],+            "groupby": [+                "age"+            ]         }-    },-    "description": "A vertical 2D box plot showing median, min, and max in the US population distribution of age groups in 2000."+    ] }
tests/specs/gallery/dist/dist5.vl view
@@ -1,101 +1,68 @@ {-    "transform": [-        {-            "groupby": [-                "age"-            ],-            "aggregate": [-                {-                    "op": "q1",-                    "as": "lowerBox",-                    "field": "people"-                },-                {-                    "op": "q3",-                    "as": "upperBox",-                    "field": "people"-                },-                {-                    "op": "median",-                    "as": "midBox",-                    "field": "people"-                }-            ]-        },-        {-            "as": "IQR",-            "calculate": "datum.upperBox - datum.lowerBox"-        },-        {-            "as": "upperWhisker",-            "calculate": "datum.upperBox + datum.IQR * 1.5"-        },-        {-            "as": "lowerWhisker",-            "calculate": "max(0,datum.lowerBox - datum.IQR *1.5)"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A Tukey box plot showing median and interquartile range in the US population distribution of age groups in 2000. This isn't strictly a Tukey box plot as the IQR extends beyond the min/max values for some age cohorts.",+    "encoding": {+        "x": {+            "field": "age",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": {-                "style": "boxWhisker",-                "type": "rule"-            },             "encoding": {-                "y2": {-                    "field": "lowerBox"-                },                 "y": {-                    "field": "lowerWhisker",-                    "type": "quantitative",                     "axis": {                         "title": "Population"-                    }+                    },+                    "field": "lowerWhisker",+                    "type": "quantitative"+                },+                "y2": {+                    "field": "lowerBox"                 }-            }-        },-        {+            },             "mark": {                 "style": "boxWhisker",                 "type": "rule"-            },+            }+        },+        {             "encoding": {-                "y2": {-                    "field": "upperWhisker"-                },                 "y": {                     "field": "upperBox",                     "type": "quantitative"+                },+                "y2": {+                    "field": "upperWhisker"                 }+            },+            "mark": {+                "style": "boxWhisker",+                "type": "rule"             }         },         {-            "mark": {-                "style": "box",-                "type": "bar"-            },             "encoding": {                 "size": {                     "value": 5                 },-                "y2": {-                    "field": "upperBox"-                },                 "y": {                     "field": "lowerBox",                     "type": "quantitative"+                },+                "y2": {+                    "field": "upperBox"                 }+            },+            "mark": {+                "style": "box",+                "type": "bar"             }         },         {-            "mark": {-                "style": "boxMid",-                "type": "tick"-            },             "encoding": {                 "color": {                     "value": "white"@@ -107,14 +74,47 @@                     "field": "midBox",                     "type": "quantitative"                 }+            },+            "mark": {+                "style": "boxMid",+                "type": "tick"             }         }     ],-    "encoding": {-        "x": {-            "field": "age",-            "type": "ordinal"+    "transform": [+        {+            "aggregate": [+                {+                    "as": "lowerBox",+                    "field": "people",+                    "op": "q1"+                },+                {+                    "as": "upperBox",+                    "field": "people",+                    "op": "q3"+                },+                {+                    "as": "midBox",+                    "field": "people",+                    "op": "median"+                }+            ],+            "groupby": [+                "age"+            ]+        },+        {+            "as": "IQR",+            "calculate": "datum.upperBox - datum.lowerBox"+        },+        {+            "as": "upperWhisker",+            "calculate": "datum.upperBox + datum.IQR * 1.5"+        },+        {+            "as": "lowerWhisker",+            "calculate": "max(0,datum.lowerBox - datum.IQR *1.5)"         }-    },-    "description": "A Tukey box plot showing median and interquartile range in the US population distribution of age groups in 2000. This isn't strictly a Tukey box plot as the IQR extends beyond the min/max values for some age cohorts."+    ] }
tests/specs/gallery/dist/quantile1.vl view
@@ -1,25 +1,10 @@ {-    "transform": [-        {-            "as": [-                "p",-                "v"-            ],-            "quantile": "u",-            "step": 1.0e-2-        },-        {-            "as": "unif",-            "calculate": "quantileUniform(datum.p)"-        },-        {-            "as": "norm",-            "calculate": "quantileNormal(datum.p)"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/normal-2d.json"+    },     "hconcat": [         {-            "mark": "point",             "encoding": {                 "x": {                     "field": "unif",@@ -29,10 +14,10 @@                     "field": "v",                     "type": "quantitative"                 }-            }+            },+            "mark": "point"         },         {-            "mark": "point",             "encoding": {                 "x": {                     "field": "norm",@@ -42,11 +27,26 @@                     "field": "v",                     "type": "quantitative"                 }-            }+            },+            "mark": "point"         }     ],-    "data": {-        "url": "https://vega.github.io/vega-lite/data/normal-2d.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    "transform": [+        {+            "as": [+                "p",+                "v"+            ],+            "quantile": "u",+            "step": 1.0e-2+        },+        {+            "as": "unif",+            "calculate": "quantileUniform(datum.p)"+        },+        {+            "as": "norm",+            "calculate": "quantileNormal(datum.p)"+        }+    ] }
tests/specs/gallery/error/error1.vl view
@@ -1,51 +1,51 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Error bars showing confidence intervals",+    "encoding": {+        "y": {+            "field": "variety",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": {-                "type": "point",-                "filled": true-            },             "encoding": {                 "color": {                     "value": "black"                 },                 "x": {+                    "aggregate": "mean",+                    "axis": {+                        "title": "Barley Yield"+                    },                     "field": "yield",                     "scale": {                         "zero": false                     },-                    "aggregate": "mean",-                    "type": "quantitative",-                    "axis": {-                        "title": "Barley Yield"-                    }+                    "type": "quantitative"                 }+            },+            "mark": {+                "filled": true,+                "type": "point"             }         },         {-            "mark": "rule",             "encoding": {-                "x2": {-                    "field": "yield",-                    "aggregate": "ci1"-                },                 "x": {-                    "field": "yield",                     "aggregate": "ci0",+                    "field": "yield",                     "type": "quantitative"+                },+                "x2": {+                    "aggregate": "ci1",+                    "field": "yield"                 }-            }-        }-    ],-    "encoding": {-        "y": {-            "field": "variety",-            "type": "ordinal"+            },+            "mark": "rule"         }-    },-    "description": "Error bars showing confidence intervals"+    ] }
tests/specs/gallery/error/error2.vl view
@@ -1,75 +1,75 @@ {-    "transform": [-        {-            "groupby": [-                "variety"-            ],-            "aggregate": [-                {-                    "op": "mean",-                    "as": "mean",-                    "field": "yield"-                },-                {-                    "op": "stdev",-                    "as": "stdev",-                    "field": "yield"-                }-            ]-        },-        {-            "as": "lower",-            "calculate": "datum.mean-datum.stdev"-        },-        {-            "as": "upper",-            "calculate": "datum.mean+datum.stdev"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Error bars showing standard deviations",+    "encoding": {+        "y": {+            "field": "variety",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": {-                "type": "point",-                "filled": true-            },             "encoding": {                 "color": {                     "value": "black"                 },                 "x": {+                    "axis": {+                        "title": "Barley Yield"+                    },                     "field": "mean",                     "scale": {                         "zero": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": "Barley Yield"-                    }+                    "type": "quantitative"                 }+            },+            "mark": {+                "filled": true,+                "type": "point"             }         },         {-            "mark": "rule",             "encoding": {-                "x2": {-                    "field": "lower"-                },                 "x": {                     "field": "upper",                     "type": "quantitative"+                },+                "x2": {+                    "field": "lower"                 }-            }+            },+            "mark": "rule"         }     ],-    "encoding": {-        "y": {-            "field": "variety",-            "type": "ordinal"+    "transform": [+        {+            "aggregate": [+                {+                    "as": "mean",+                    "field": "yield",+                    "op": "mean"+                },+                {+                    "as": "stdev",+                    "field": "yield",+                    "op": "stdev"+                }+            ],+            "groupby": [+                "variety"+            ]+        },+        {+            "as": "lower",+            "calculate": "datum.mean-datum.stdev"+        },+        {+            "as": "upper",+            "calculate": "datum.mean+datum.stdev"         }-    },-    "description": "Error bars showing standard deviations"+    ] }
tests/specs/gallery/error/error3.vl view
@@ -1,46 +1,46 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Line chart with confidence interval band.",+    "encoding": {+        "x": {+            "field": "Year",+            "timeUnit": "year",+            "type": "temporal"+        }+    },     "layer": [         {-            "mark": "area",             "encoding": {                 "opacity": {                     "value": 0.3                 },-                "y2": {-                    "field": "Miles_per_Gallon",-                    "aggregate": "ci1"-                },                 "y": {-                    "field": "Miles_per_Gallon",                     "aggregate": "ci0",-                    "type": "quantitative",                     "axis": {                         "title": "Miles/Gallon"-                    }+                    },+                    "field": "Miles_per_Gallon",+                    "type": "quantitative"+                },+                "y2": {+                    "aggregate": "ci1",+                    "field": "Miles_per_Gallon"                 }-            }+            },+            "mark": "area"         },         {-            "mark": "line",             "encoding": {                 "y": {-                    "field": "Miles_per_Gallon",                     "aggregate": "mean",+                    "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "Year",-            "timeUnit": "year",-            "type": "temporal"+            },+            "mark": "line"         }-    },-    "description": "Line chart with confidence interval band."+    ] }
tests/specs/gallery/error/error4.vl view
@@ -1,11 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A scatterplot showing horsepower and miles per gallon for various cars with a global mean and standard deviation overlay.",     "layer": [         {-            "mark": "point",             "encoding": {                 "x": {                     "field": "Horsepower",@@ -15,61 +15,61 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }-            }+            },+            "mark": "point"         },         {-            "transform": [-                {-                    "groupby": [],-                    "aggregate": [-                        {-                            "op": "mean",-                            "as": "mean_MPG",-                            "field": "Miles_per_Gallon"-                        },-                        {-                            "op": "stdev",-                            "as": "dev_MPG",-                            "field": "Miles_per_Gallon"-                        }-                    ]-                },-                {-                    "as": "upper",-                    "calculate": "datum.mean_MPG+datum.dev_MPG"-                },-                {-                    "as": "lower",-                    "calculate": "datum.mean_MPG-datum.dev_MPG"-                }-            ],             "layer": [                 {-                    "mark": "rule",                     "encoding": {                         "y": {                             "field": "mean_MPG",                             "type": "quantitative"                         }-                    }+                    },+                    "mark": "rule"                 },                 {-                    "mark": "rect",                     "encoding": {                         "opacity": {                             "value": 0.2                         },-                        "y2": {-                            "field": "upper"-                        },                         "y": {                             "field": "lower",                             "type": "quantitative"+                        },+                        "y2": {+                            "field": "upper"                         }-                    }+                    },+                    "mark": "rect"                 }+            ],+            "transform": [+                {+                    "aggregate": [+                        {+                            "as": "mean_MPG",+                            "field": "Miles_per_Gallon",+                            "op": "mean"+                        },+                        {+                            "as": "dev_MPG",+                            "field": "Miles_per_Gallon",+                            "op": "stdev"+                        }+                    ],+                    "groupby": []+                },+                {+                    "as": "upper",+                    "calculate": "datum.mean_MPG+datum.dev_MPG"+                },+                {+                    "as": "lower",+                    "calculate": "datum.mean_MPG-datum.dev_MPG"+                }             ]         }-    ],-    "description": "A scatterplot showing horsepower and miles per gallon for various cars with a global mean and standard deviation overlay."+    ] }
tests/specs/gallery/facet/facet1.vl view
@@ -1,21 +1,9 @@ {-    "transform": [-        {-            "filter": "datum.year == 2000"-        },-        {-            "as": "gender",-            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"-        }-    ],-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/population.json"     },-    "width": {-        "step": 17-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A trellis bar chart showing the US population distribution of age groups and gender in 2000",     "encoding": {         "color": {             "field": "gender",@@ -36,13 +24,25 @@             "type": "ordinal"         },         "y": {-            "field": "people",             "aggregate": "sum",-            "type": "quantitative",             "axis": {                 "title": "Population"-            }+            },+            "field": "people",+            "type": "quantitative"         }     },-    "description": "A trellis bar chart showing the US population distribution of age groups and gender in 2000"+    "mark": "bar",+    "transform": [+        {+            "filter": "datum.year == 2000"+        },+        {+            "as": "gender",+            "calculate": "datum.sex == 2 ? 'Female' : 'Male'"+        }+    ],+    "width": {+        "step": 17+    } }
tests/specs/gallery/facet/facet2.vl view
@@ -1,27 +1,27 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Barley crop yields in 1931 and 1932 shown as stacked bar charts",     "encoding": {         "color": {             "field": "site",             "type": "nominal"         },-        "x": {-            "field": "yield",-            "aggregate": "sum",-            "type": "quantitative"-        },         "column": {             "field": "year",             "type": "ordinal"         },+        "x": {+            "aggregate": "sum",+            "field": "yield",+            "type": "quantitative"+        },         "y": {             "field": "variety",             "type": "nominal"         }     },-    "description": "Barley crop yields in 1931 and 1932 shown as stacked bar charts"+    "mark": "bar" }
tests/specs/gallery/facet/facet3.vl view
@@ -1,22 +1,22 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Scatterplots of movie takings vs profits for different MPAA ratings",     "encoding": {-        "x": {-            "field": "Worldwide_Gross",-            "type": "quantitative"-        },         "column": {             "field": "MPAA_Rating",             "type": "ordinal"         },+        "x": {+            "field": "Worldwide_Gross",+            "type": "quantitative"+        },         "y": {             "field": "US_DVD_Sales",             "type": "quantitative"         }     },-    "description": "Scatterplots of movie takings vs profits for different MPAA ratings"+    "mark": "point" }
tests/specs/gallery/facet/facet4.vl view
@@ -1,9 +1,9 @@ {-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Distributions of car engine power for different countries of origin",     "encoding": {         "row": {             "field": "Origin",@@ -11,10 +11,10 @@             "type": "ordinal"         },         "x": {-            "field": "Horsepower",             "bin": {                 "maxbins": 15             },+            "field": "Horsepower",             "type": "quantitative"         },         "y": {@@ -22,5 +22,5 @@             "type": "quantitative"         }     },-    "description": "Distributions of car engine power for different countries of origin"+    "mark": "bar" }
tests/specs/gallery/facet/facet5.vl view
@@ -1,10 +1,14 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/anscombe.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Anscombe's Quartet",     "encoding": {+        "column": {+            "field": "Series",+            "type": "ordinal"+        },         "opacity": {             "value": 1         },@@ -15,10 +19,6 @@             },             "type": "quantitative"         },-        "column": {-            "field": "Series",-            "type": "ordinal"-        },         "y": {             "field": "Y",             "scale": {@@ -27,5 +27,5 @@             "type": "quantitative"         }     },-    "description": "Anscombe's Quartet"+    "mark": "circle" }
tests/specs/gallery/facet/facet6.vl view
@@ -1,23 +1,33 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "columns": 2,     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "spec": {-        "height": {-            "step": 12+    "description": "The Trellis display by Becker et al. helped establish small multiples as a 'powerful mechanism for understanding interactions in studies of how a response depends on explanatory variables'",+    "facet": {+        "field": "site",+        "header": {+            "title": null         },-        "mark": "point",+        "sort": {+            "field": "yield",+            "op": "median"+        },+        "type": "ordinal"+    },+    "spec": {         "encoding": {             "color": {                 "field": "year",                 "type": "nominal"             },             "x": {+                "aggregate": "median",                 "field": "yield",                 "scale": {                     "zero": false                 },-                "aggregate": "median",                 "type": "quantitative"             },             "y": {@@ -28,20 +38,10 @@                 },                 "type": "ordinal"             }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "columns": 2,-    "facet": {-        "field": "site",-        "header": {-            "title": null         },-        "sort": {-            "op": "median",-            "field": "yield"+        "height": {+            "step": 12         },-        "type": "ordinal"-    },-    "description": "The Trellis display by Becker et al. helped establish small multiples as a 'powerful mechanism for understanding interactions in studies of how a response depends on explanatory variables'"+        "mark": "point"+    } }
tests/specs/gallery/facet/facet7.vl view
@@ -1,59 +1,59 @@ {-    "height": 50,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": "area",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "width": 300,-    "resolve": {-        "scale": {-            "y": "independent"-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Stock prices of five large companies as a small multiples of area charts",     "encoding": {         "color": {             "field": "symbol",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "row": {             "field": "symbol",             "header": {+                "labelAlign": "left",                 "labelAngle": 0,-                "labelFontStyle": "italic",                 "labelExpr": "'{' + datum.label + '}'",-                "titleLineHeight": 20,+                "labelFontStyle": "italic",                 "title": [                     "Stock",                     "price"                 ],-                "labelAlign": "left"+                "titleLineHeight": 20             },             "type": "nominal"         },         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y",                 "grid": false,                 "title": null-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {-            "field": "price",-            "type": "quantitative",             "axis": {                 "grid": false,                 "title": null-            }+            },+            "field": "price",+            "type": "quantitative"         }     },-    "description": "Stock prices of five large companies as a small multiples of area charts"+    "height": 50,+    "mark": "area",+    "resolve": {+        "scale": {+            "y": "independent"+        }+    },+    "width": 300 }
tests/specs/gallery/facet/facet_bullet.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "tick": {             "thickness": 2@@ -7,183 +8,182 @@     "data": {         "values": [             {+                "markers": [+                    250+                ],                 "measures": [                     220,                     270                 ],-                "markers": [-                    250-                ],-                "subtitle": "US$, in thousands",                 "ranges": [                     150,                     225,                     300                 ],+                "subtitle": "US$, in thousands",                 "title": "Revenue"             },             {+                "markers": [+                    26+                ],                 "measures": [                     21,                     23                 ],-                "markers": [-                    26-                ],-                "subtitle": "%",                 "ranges": [                     20,                     25,                     30                 ],+                "subtitle": "%",                 "title": "Profit"             },             {+                "markers": [+                    550+                ],                 "measures": [                     100,                     320                 ],-                "markers": [-                    550-                ],-                "subtitle": "US$, average",                 "ranges": [                     350,                     500,                     600                 ],+                "subtitle": "US$, average",                 "title": "Order Size"             },             {+                "markers": [+                    2100+                ],                 "measures": [                     1000,                     1650                 ],-                "markers": [-                    2100-                ],-                "subtitle": "count",                 "ranges": [                     1400,                     2000,                     2500                 ],+                "subtitle": "count",                 "title": "New Customers"             },             {+                "markers": [+                    4.4+                ],                 "measures": [                     3.2,                     4.7                 ],-                "markers": [-                    4.4-                ],-                "subtitle": "out of 5",                 "ranges": [                     3.5,                     4.25,                     5                 ],+                "subtitle": "out of 5",                 "title": "Satisfaction"             }         ]     },+    "facet": {+        "row": {+            "field": "title",+            "header": {+                "labelAngle": 0,+                "title": null+            },+            "type": "ordinal"+        }+    },     "resolve": {         "scale": {             "x": "independent"         }     },+    "spacing": 10,     "spec": {+        "encoding": {+            "x": {+                "scale": {+                    "nice": false+                },+                "title": null,+                "type": "quantitative"+            }+        },         "layer": [             {-                "mark": {-                    "color": "#eee",-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "ranges[2]"                     }+                },+                "mark": {+                    "color": "#eee",+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "#ddd",-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "ranges[1]"                     }+                },+                "mark": {+                    "color": "#ddd",+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "#ccc",-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "ranges[0]"                     }+                },+                "mark": {+                    "color": "#ccc",+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "lightsteelblue",-                    "size": 10,-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "measures[1]"                     }-                }-            },-            {+                },                 "mark": {-                    "color": "steelblue",+                    "color": "lightsteelblue",                     "size": 10,                     "type": "bar"-                },+                }+            },+            {                 "encoding": {                     "x": {                         "field": "measures[0]"                     }+                },+                "mark": {+                    "color": "steelblue",+                    "size": 10,+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "black",-                    "type": "tick"-                },                 "encoding": {                     "x": {                         "field": "markers[0]"                     }-                }-            }-        ],-        "encoding": {-            "x": {-                "scale": {-                    "nice": false                 },-                "title": null,-                "type": "quantitative"+                "mark": {+                    "color": "black",+                    "type": "tick"+                }             }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "facet": {-        "row": {-            "field": "title",-            "header": {-                "labelAngle": 0,-                "title": null-            },-            "type": "ordinal"-        }-    },-    "spacing": 10+        ]+    } }
tests/specs/gallery/facet/facetgridbar.vl view
@@ -1,186 +1,187 @@ {-    "height": {-        "step": 8-    },-    "mark": "bar",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "p": "0.14",                 "a": "a1",                 "b": "b1",-                "c": "x"+                "c": "x",+                "p": "0.14"             },             {-                "p": "0.60",                 "a": "a1",                 "b": "b1",-                "c": "y"+                "c": "y",+                "p": "0.60"             },             {-                "p": "0.03",                 "a": "a1",                 "b": "b1",-                "c": "z"+                "c": "z",+                "p": "0.03"             },             {-                "p": "0.80",                 "a": "a1",                 "b": "b2",-                "c": "x"+                "c": "x",+                "p": "0.80"             },             {-                "p": "0.38",                 "a": "a1",                 "b": "b2",-                "c": "y"+                "c": "y",+                "p": "0.38"             },             {-                "p": "0.55",                 "a": "a1",                 "b": "b2",-                "c": "z"+                "c": "z",+                "p": "0.55"             },             {-                "p": "0.11",                 "a": "a1",                 "b": "b3",-                "c": "x"+                "c": "x",+                "p": "0.11"             },             {-                "p": "0.58",                 "a": "a1",                 "b": "b3",-                "c": "y"+                "c": "y",+                "p": "0.58"             },             {-                "p": "0.79",                 "a": "a1",                 "b": "b3",-                "c": "z"+                "c": "z",+                "p": "0.79"             },             {-                "p": "0.83",                 "a": "a2",                 "b": "b1",-                "c": "x"+                "c": "x",+                "p": "0.83"             },             {-                "p": "0.87",                 "a": "a2",                 "b": "b1",-                "c": "y"+                "c": "y",+                "p": "0.87"             },             {-                "p": "0.67",                 "a": "a2",                 "b": "b1",-                "c": "z"+                "c": "z",+                "p": "0.67"             },             {-                "p": "0.97",                 "a": "a2",                 "b": "b2",-                "c": "x"+                "c": "x",+                "p": "0.97"             },             {-                "p": "0.84",                 "a": "a2",                 "b": "b2",-                "c": "y"+                "c": "y",+                "p": "0.84"             },             {-                "p": "0.90",                 "a": "a2",                 "b": "b2",-                "c": "z"+                "c": "z",+                "p": "0.90"             },             {-                "p": "0.74",                 "a": "a2",                 "b": "b3",-                "c": "x"+                "c": "x",+                "p": "0.74"             },             {-                "p": "0.64",                 "a": "a2",                 "b": "b3",-                "c": "y"+                "c": "y",+                "p": "0.64"             },             {-                "p": "0.19",                 "a": "a2",                 "b": "b3",-                "c": "z"+                "c": "z",+                "p": "0.19"             },             {-                "p": "0.57",                 "a": "a3",                 "b": "b1",-                "c": "x"+                "c": "x",+                "p": "0.57"             },             {-                "p": "0.35",                 "a": "a3",                 "b": "b1",-                "c": "y"+                "c": "y",+                "p": "0.35"             },             {-                "p": "0.49",                 "a": "a3",                 "b": "b1",-                "c": "z"+                "c": "z",+                "p": "0.49"             },             {-                "p": "0.91",                 "a": "a3",                 "b": "b2",-                "c": "x"+                "c": "x",+                "p": "0.91"             },             {-                "p": "0.38",                 "a": "a3",                 "b": "b2",-                "c": "y"+                "c": "y",+                "p": "0.38"             },             {-                "p": "0.91",                 "a": "a3",                 "b": "b2",-                "c": "z"+                "c": "z",+                "p": "0.91"             },             {-                "p": "0.99",                 "a": "a3",                 "b": "b3",-                "c": "x"+                "c": "x",+                "p": "0.99"             },             {-                "p": "0.80",                 "a": "a3",                 "b": "b3",-                "c": "y"+                "c": "y",+                "p": "0.80"             },             {-                "p": "0.37",                 "a": "a3",                 "b": "b3",-                "c": "z"+                "c": "z",+                "p": "0.37"             }         ]     },-    "width": 60,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A simple grid of bar charts to compare performance data.",     "encoding": {         "color": {             "field": "c",-            "title": "settings",-            "type": "nominal",             "legend": {                 "orient": "bottom",                 "titleOrient": "left"-            }+            },+            "title": "settings",+            "type": "nominal"         },+        "column": {+            "field": "b",+            "title": "Factor B",+            "type": "nominal"+        },         "row": {             "field": "a",             "header": {@@ -190,24 +191,23 @@             "type": "nominal"         },         "x": {-            "field": "p",-            "title": null,-            "type": "quantitative",             "axis": {                 "format": "%"-            }-        },-        "column": {-            "field": "b",-            "title": "Factor B",-            "type": "nominal"+            },+            "field": "p",+            "title": null,+            "type": "quantitative"         },         "y": {+            "axis": null,             "field": "c",-            "type": "nominal",-            "axis": null+            "type": "nominal"         }     },-    "description": "A simple grid of bar charts to compare performance data.",-    "spacing": 5+    "height": {+        "step": 8+    },+    "mark": "bar",+    "spacing": 5,+    "width": 60 }
tests/specs/gallery/facet/trellisareaseattle.vl view
@@ -1,10 +1,5 @@ {-    "transform": [-        {-            "as": "order",-            "calculate": "(hours(datum.date) + 18) % 24"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "axis": {             "domain": false,@@ -14,56 +9,61 @@     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-temps.csv"     },-    "spec": {-        "height": 25,-        "mark": "area",-        "width": 800,-        "view": {-            "stroke": null-        },-        "encoding": {-            "x": {-                "field": "date",-                "title": "Month",-                "type": "temporal",-                "axis": {-                    "format": "%b"-                }-            },-            "y": {-                "field": "temp",-                "scale": {-                    "zero": false-                },-                "type": "quantitative",-                "axis": {-                    "labels": false,-                    "title": null,-                    "ticks": false-                }-            }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Average temps in Seattle, by hour",     "facet": {         "row": {             "field": "date",-            "timeUnit": "hours",             "header": {+                "labelAlign": "left",                 "labelAngle": 0,                 "labelExpr": "hours(datum.value) == 0 ? 'Midnight' : hours(datum.value) == 12 ? 'Noon' : timeFormat(datum.value, '%I:%M %p')",-                "titlePadding": -4,                 "labelPadding": 2,-                "labelAlign": "left"+                "titlePadding": -4             },             "sort": {-                "op": "max",-                "field": "order"+                "field": "order",+                "op": "max"             },+            "timeUnit": "hours",             "type": "nominal"         }     },+    "spacing": 1,+    "spec": {+        "encoding": {+            "x": {+                "axis": {+                    "format": "%b"+                },+                "field": "date",+                "title": "Month",+                "type": "temporal"+            },+            "y": {+                "axis": {+                    "labels": false,+                    "ticks": false,+                    "title": null+                },+                "field": "temp",+                "scale": {+                    "zero": false+                },+                "type": "quantitative"+            }+        },+        "height": 25,+        "mark": "area",+        "view": {+            "stroke": null+        },+        "width": 800+    },     "title": "Seattle Annual Temperatures",-    "description": "Average temps in Seattle, by hour",-    "spacing": 1+    "transform": [+        {+            "as": "order",+            "calculate": "(hours(datum.date) + 18) % 24"+        }+    ] }
tests/specs/gallery/geo/geo1.vl view
@@ -1,36 +1,16 @@ {-    "transform": [-        {-            "from": {-                "data": {-                    "url": "https://vega.github.io/vega-lite/data/unemployment.tsv"-                },-                "key": "id",-                "fields": [-                    "rate"-                ]-            },-            "lookup": "id"-        }-    ],-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": "geoshape",     "data": {-        "url": "https://vega.github.io/vega-lite/data/us-10m.json",         "format": {             "feature": "counties",             "type": "topojson"-        }-    },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"+        },+        "url": "https://vega.github.io/vega-lite/data/us-10m.json"     },     "encoding": {         "color": {@@ -38,5 +18,25 @@             "sort": "descending",             "type": "quantitative"         }-    }+    },+    "height": 300,+    "mark": "geoshape",+    "projection": {+        "type": "albersUsa"+    },+    "transform": [+        {+            "from": {+                "data": {+                    "url": "https://vega.github.io/vega-lite/data/unemployment.tsv"+                },+                "fields": [+                    "rate"+                ],+                "key": "id"+            },+            "lookup": "id"+        }+    ],+    "width": 500 }
tests/specs/gallery/geo/geo2.vl view
@@ -1,33 +1,19 @@ {-    "transform": [-        {-            "as": "digit",-            "calculate": "substring(datum.zip_code, 0, 1)"-        }-    ],-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": "circle",     "data": {         "url": "https://vega.github.io/vega-lite/data/zipcodes.csv"     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "US zip codes: One dot per zipcode colored by first digit",     "encoding": {         "color": {             "field": "digit",             "type": "nominal"         },-        "size": {-            "value": 1-        },         "latitude": {             "field": "latitude",             "type": "quantitative"@@ -35,7 +21,21 @@         "longitude": {             "field": "longitude",             "type": "quantitative"+        },+        "size": {+            "value": 1         }     },-    "description": "US zip codes: One dot per zipcode colored by first digit"+    "height": 300,+    "mark": "circle",+    "projection": {+        "type": "albersUsa"+    },+    "transform": [+        {+            "as": "digit",+            "calculate": "substring(datum.zip_code, 0, 1)"+        }+    ],+    "width": 500 }
tests/specs/gallery/geo/geo3.vl view
@@ -1,33 +1,29 @@ {-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "One dot per airport in the US overlayed on geoshape",+    "height": 300,     "layer": [         {-            "mark": "geoshape",             "data": {-                "url": "https://vega.github.io/vega-lite/data/us-10m.json",                 "format": {                     "feature": "states",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/us-10m.json"             },             "encoding": {                 "color": {                     "value": "#eee"                 }-            }+            },+            "mark": "geoshape"         },         {-            "mark": "circle",             "data": {                 "url": "https://vega.github.io/vega-lite/data/airports.csv"             },@@ -35,9 +31,6 @@                 "color": {                     "value": "steelblue"                 },-                "size": {-                    "value": 5-                },                 "latitude": {                     "field": "latitude",                     "type": "quantitative"@@ -45,9 +38,16 @@                 "longitude": {                     "field": "longitude",                     "type": "quantitative"+                },+                "size": {+                    "value": 5                 }-            }+            },+            "mark": "circle"         }     ],-    "description": "One dot per airport in the US overlayed on geoshape"+    "projection": {+        "type": "albersUsa"+    },+    "width": 500 }
tests/specs/gallery/geo/geo4.vl view
@@ -1,33 +1,29 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "Rules (line segments) connecting SEA to every airport reachable via direct flight",+    "height": 500,     "layer": [         {-            "mark": "geoshape",             "data": {-                "url": "https://vega.github.io/vega-lite/data/us-10m.json",                 "format": {                     "feature": "states",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/us-10m.json"             },             "encoding": {                 "color": {                     "value": "#eee"                 }-            }+            },+            "mark": "geoshape"         },         {-            "mark": "circle",             "data": {                 "url": "https://vega.github.io/vega-lite/data/airports.csv"             },@@ -35,9 +31,6 @@                 "color": {                     "value": "gray"                 },-                "size": {-                    "value": 5-                },                 "latitude": {                     "field": "latitude",                     "type": "quantitative"@@ -45,10 +38,34 @@                 "longitude": {                     "field": "longitude",                     "type": "quantitative"+                },+                "size": {+                    "value": 5                 }-            }+            },+            "mark": "circle"         },         {+            "data": {+                "url": "https://vega.github.io/vega-lite/data/flights-airport.csv"+            },+            "encoding": {+                "latitude": {+                    "field": "o.latitude",+                    "type": "quantitative"+                },+                "latitude2": {+                    "field": "d.latitude"+                },+                "longitude": {+                    "field": "o.longitude",+                    "type": "quantitative"+                },+                "longitude2": {+                    "field": "d.longitude"+                }+            },+            "mark": "rule",             "transform": [                 {                     "filter": {@@ -76,28 +93,11 @@                     },                     "lookup": "destination"                 }-            ],-            "mark": "rule",-            "data": {-                "url": "https://vega.github.io/vega-lite/data/flights-airport.csv"-            },-            "encoding": {-                "latitude": {-                    "field": "o.latitude",-                    "type": "quantitative"-                },-                "latitude2": {-                    "field": "d.latitude"-                },-                "longitude": {-                    "field": "o.longitude",-                    "type": "quantitative"-                },-                "longitude2": {-                    "field": "d.longitude"-                }-            }+            ]         }     ],-    "description": "Rules (line segments) connecting SEA to every airport reachable via direct flight"+    "projection": {+        "type": "albersUsa"+    },+    "width": 800 }
tests/specs/gallery/geo/geo5.vl view
@@ -1,14 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "resolve": {-        "scale": {-            "color": "independent"-        }-    },+    "description": "Population per state, engineers per state, and hurricanes per state",     "repeat": {         "row": [             "population",@@ -16,32 +13,15 @@             "hurricanes"         ]     },+    "resolve": {+        "scale": {+            "color": "independent"+        }+    },     "spec": {-        "transform": [-            {-                "as": "geo",-                "from": {-                    "data": {-                        "url": "https://vega.github.io/vega-lite/data/us-10m.json",-                        "format": {-                            "feature": "states",-                            "type": "topojson"-                        }-                    },-                    "key": "id"-                },-                "lookup": "id"-            }-        ],-        "height": 300,-        "mark": "geoshape",         "data": {             "url": "https://vega.github.io/vega-lite/data/population_engineers_hurricanes.csv"         },-        "width": 500,-        "projection": {-            "type": "albersUsa"-        },         "encoding": {             "color": {                 "field": {@@ -54,8 +34,28 @@                 "field": "geo",                 "type": "geojson"             }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Population per state, engineers per state, and hurricanes per state"+        },+        "height": 300,+        "mark": "geoshape",+        "projection": {+            "type": "albersUsa"+        },+        "transform": [+            {+                "as": "geo",+                "from": {+                    "data": {+                        "format": {+                            "feature": "states",+                            "type": "topojson"+                        },+                        "url": "https://vega.github.io/vega-lite/data/us-10m.json"+                    },+                    "key": "id"+                },+                "lookup": "id"+            }+        ],+        "width": 500+    } }
tests/specs/gallery/geo/geo6.vl view
@@ -1,41 +1,33 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "US state capitals overlayed on map of the US",+    "height": 500,     "layer": [         {-            "mark": "geoshape",             "data": {-                "url": "https://vega.github.io/vega-lite/data/us-10m.json",                 "format": {                     "feature": "states",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/us-10m.json"             },             "encoding": {                 "color": {                     "value": "#ccc"                 }-            }+            },+            "mark": "geoshape"         },         {-            "mark": "text",             "data": {                 "url": "https://vega.github.io/vega-lite/data/us-state-capitals.json"             },             "encoding": {-                "text": {-                    "field": "city",-                    "type": "nominal"-                },                 "latitude": {                     "field": "lat",                     "type": "quantitative"@@ -43,9 +35,17 @@                 "longitude": {                     "field": "lon",                     "type": "quantitative"+                },+                "text": {+                    "field": "city",+                    "type": "nominal"                 }-            }+            },+            "mark": "text"         }     ],-    "description": "US state capitals overlayed on map of the US"+    "projection": {+        "type": "albersUsa"+    },+    "width": 800 }
tests/specs/gallery/geo/geo7.vl view
@@ -1,33 +1,29 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "Line drawn between airports in the U.S. simulating a flight itinerary",+    "height": 500,     "layer": [         {-            "mark": "geoshape",             "data": {-                "url": "https://vega.github.io/vega-lite/data/us-10m.json",                 "format": {                     "feature": "states",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/us-10m.json"             },             "encoding": {                 "color": {                     "value": "#eee"                 }-            }+            },+            "mark": "geoshape"         },         {-            "mark": "circle",             "data": {                 "url": "https://vega.github.io/vega-lite/data/airports.csv"             },@@ -35,9 +31,6 @@                 "color": {                     "value": "gray"                 },-                "size": {-                    "value": 5-                },                 "latitude": {                     "field": "latitude",                     "type": "quantitative"@@ -45,26 +38,14 @@                 "longitude": {                     "field": "longitude",                     "type": "quantitative"+                },+                "size": {+                    "value": 5                 }-            }+            },+            "mark": "circle"         },         {-            "transform": [-                {-                    "from": {-                        "data": {-                            "url": "https://vega.github.io/vega-lite/data/airports.csv"-                        },-                        "key": "iata",-                        "fields": [-                            "latitude",-                            "longitude"-                        ]-                    },-                    "lookup": "airport"-                }-            ],-            "mark": "line",             "data": {                 "values": [                     {@@ -117,8 +98,27 @@                 "order": {                     "field": "order"                 }-            }+            },+            "mark": "line",+            "transform": [+                {+                    "from": {+                        "data": {+                            "url": "https://vega.github.io/vega-lite/data/airports.csv"+                        },+                        "fields": [+                            "latitude",+                            "longitude"+                        ],+                        "key": "iata"+                    },+                    "lookup": "airport"+                }+            ]         }     ],-    "description": "Line drawn between airports in the U.S. simulating a flight itinerary"+    "projection": {+        "type": "albersUsa"+    },+    "width": 800 }
tests/specs/gallery/geo/geo8.vl view
@@ -1,49 +1,49 @@ {-    "transform": [-        {-            "as": "geo",-            "from": {-                "data": {-                    "url": "https://vega.github.io/vega-lite/data/us-10m.json",-                    "format": {-                        "feature": "states",-                        "type": "topojson"-                    }-                },-                "key": "id"-            },-            "lookup": "id"-        }-    ],-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": "geoshape",     "data": {         "url": "https://vega.github.io/vega-lite/data/income.json"     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "Income in the U.S. by state, faceted over income brackets",     "encoding": {         "color": {             "field": "pct",             "sort": "descending",             "type": "quantitative"         },-        "shape": {-            "field": "geo",-            "type": "geojson"-        },         "row": {             "field": "group",             "type": "nominal"+        },+        "shape": {+            "field": "geo",+            "type": "geojson"         }     },-    "description": "Income in the U.S. by state, faceted over income brackets"+    "height": 300,+    "mark": "geoshape",+    "projection": {+        "type": "albersUsa"+    },+    "transform": [+        {+            "as": "geo",+            "from": {+                "data": {+                    "format": {+                        "feature": "states",+                        "type": "topojson"+                    },+                    "url": "https://vega.github.io/vega-lite/data/us-10m.json"+                },+                "key": "id"+            },+            "lookup": "id"+        }+    ],+    "width": 500 }
tests/specs/gallery/geo/geo9.vl view
@@ -1,80 +1,80 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 700,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Geographic position of London underground lines",+    "height": 500,     "layer": [         {-            "mark": {-                "strokeWidth": 2,-                "stroke": "rgb(251,247,238)",-                "type": "geoshape"-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json",                 "format": {                     "feature": "boroughs",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json"             },             "encoding": {                 "color": {                     "value": "#ddc"                 }+            },+            "mark": {+                "stroke": "rgb(251,247,238)",+                "strokeWidth": 2,+                "type": "geoshape"             }         },         {-            "transform": [-                {-                    "as": "bLabel",-                    "calculate": "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"-                }-            ],-            "mark": "text",             "data": {                 "url": "https://vega.github.io/vega-lite/data/londonCentroids.json"             },             "encoding": {-                "size": {-                    "value": 8-                },-                "text": {-                    "field": "bLabel",-                    "type": "nominal"-                },                 "latitude": {                     "field": "cy",                     "type": "quantitative"                 },-                "opacity": {-                    "value": 0.6-                },                 "longitude": {                     "field": "cx",                     "type": "quantitative"+                },+                "opacity": {+                    "value": 0.6+                },+                "size": {+                    "value": 8+                },+                "text": {+                    "field": "bLabel",+                    "type": "nominal"                 }-            }+            },+            "mark": "text",+            "transform": [+                {+                    "as": "bLabel",+                    "calculate": "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"+                }+            ]         },         {-            "mark": {-                "strokeWidth": 2,-                "type": "geoshape",-                "filled": false-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json",                 "format": {                     "feature": "line",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json"             },             "encoding": {                 "color": {                     "field": "id",+                    "legend": {+                        "offset": 0,+                        "orient": "bottom-right",+                        "title": null+                    },                     "scale": {                         "domain": [                             "Bakerloo",@@ -105,15 +105,15 @@                             "rgb(106,187,170)"                         ]                     },-                    "type": "nominal",-                    "legend": {-                        "offset": 0,-                        "orient": "bottom-right",-                        "title": null-                    }+                    "type": "nominal"                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 2,+                "type": "geoshape"             }         }     ],-    "description": "Geographic position of London underground lines"+    "width": 700 }
tests/specs/gallery/histogram/histogram_rel_freq.vl view
@@ -1,30 +1,62 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },+    "description": "Relative frequency histogram. The data is binned with first transform. The number of values per bin and the total number are calculated in the second and third transform to calculate the relative frequency in the last transformation step.",+    "encoding": {+        "x": {+            "bin": {+                "binned": true+            },+            "field": "bin_Horsepwoer",+            "title": "Horsepower",+            "type": "quantitative"+        },+        "x2": {+            "field": "bin_Horsepwoer_end"+        },+        "y": {+            "axis": {+                "format": ".1~%"+            },+            "field": "PercentOfTotal",+            "title": "Relative Frequency",+            "type": "quantitative"+        }+    },+    "mark": {+        "tooltip": {+            "content": "encoding"+        },+        "type": "bar"+    },     "transform": [         {             "as": "bin_Horsepwoer",-            "field": "Horsepower",             "bin": {                 "binned": true-            }+            },+            "field": "Horsepower"         },         {-            "groupby": [-                "bin_Horsepwoer",-                "bin_Horsepwoer_end"-            ],             "aggregate": [                 {-                    "op": "count",-                    "as": "Count"+                    "as": "Count",+                    "op": "count"                 }+            ],+            "groupby": [+                "bin_Horsepwoer",+                "bin_Horsepwoer_end"             ]         },         {             "joinaggregate": [                 {-                    "op": "sum",                     "as": "TotalCount",-                    "field": "Count"+                    "field": "Count",+                    "op": "sum"                 }             ]         },@@ -32,37 +64,5 @@             "as": "PercentOfTotal",             "calculate": "datum.Count/datum.TotalCount"         }-    ],-    "mark": {-        "tooltip": {-            "content": "encoding"-        },-        "type": "bar"-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "encoding": {-        "x2": {-            "field": "bin_Horsepwoer_end"-        },-        "x": {-            "field": "bin_Horsepwoer",-            "bin": {-                "binned": true-            },-            "title": "Horsepower",-            "type": "quantitative"-        },-        "y": {-            "field": "PercentOfTotal",-            "title": "Relative Frequency",-            "type": "quantitative",-            "axis": {-                "format": ".1~%"-            }-        }-    },-    "description": "Relative frequency histogram. The data is binned with first transform. The number of values per bin and the total number are calculated in the second and third transform to calculate the relative frequency in the last transformation step."+    ] }
tests/specs/gallery/interaction/interaction1.vl view
@@ -1,15 +1,10 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "scale": {             "bandPaddingInner": 0.2         }     },-    "mark": {-        "cursor": "pointer",-        "stroke": "black",-        "fill": "#4C78A8",-        "type": "bar"-    },     "data": {         "values": [             {@@ -50,23 +45,18 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "highlight": {-            "empty": "none",-            "type": "single",-            "on": "mouseover"-        },-        "select": {-            "type": "multi"-        }-    },+    "description": "A bar chart with highlighting on hover and selecting on click. Inspired by Tableau's interaction style.",     "encoding": {+        "fillOpacity": {+            "condition": {+                "selection": "select",+                "value": 1+            },+            "value": 0.3+        },         "strokeWidth": {-            "value": 0,             "condition": [                 {-                    "value": 2,                     "test": {                         "and": [                             {@@ -74,29 +64,39 @@                             },                             "length(data(\"select_store\"))"                         ]-                    }+                    },+                    "value": 2                 },                 {-                    "value": 1,-                    "selection": "highlight"+                    "selection": "highlight",+                    "value": 1                 }-            ]+            ],+            "value": 0         },         "x": {             "field": "a",             "type": "ordinal"         },-        "fillOpacity": {-            "value": 0.3,-            "condition": {-                "value": 1,-                "selection": "select"-            }-        },         "y": {             "field": "b",             "type": "quantitative"         }     },-    "description": "A bar chart with highlighting on hover and selecting on click. Inspired by Tableau's interaction style."+    "mark": {+        "cursor": "pointer",+        "fill": "#4C78A8",+        "stroke": "black",+        "type": "bar"+    },+    "selection": {+        "highlight": {+            "empty": "none",+            "on": "mouseover",+            "type": "single"+        },+        "select": {+            "type": "multi"+        }+    } }
tests/specs/gallery/interaction/interaction10.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "axisY": {             "minExtent": 30@@ -7,74 +8,73 @@     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Multi Series Line Chart with Tooltip",+    "encoding": {+        "tooltip": [+            {+                "field": "date",+                "timeUnit": "yearmonthdate",+                "type": "temporal"+            },+            {+                "field": "temp_max",+                "type": "quantitative"+            },+            {+                "field": "temp_min",+                "type": "quantitative"+            }+        ],+        "x": {+            "field": "date",+            "timeUnit": "yearmonthdate",+            "type": "temporal"+        }+    },     "layer": [         {-            "mark": {-                "color": "orange",-                "type": "line"-            },             "encoding": {                 "y": {                     "field": "temp_max",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "orange",+                "type": "line"             }         },         {-            "mark": {-                "color": "red",-                "type": "line"-            },             "encoding": {                 "y": {                     "field": "temp_min",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "type": "line"             }         },         {-            "mark": "rule",-            "selection": {-                "hover": {-                    "empty": "none",-                    "type": "single",-                    "on": "mouseover"-                }-            },             "encoding": {                 "color": {                     "condition": {-                        "value": "transparent",                         "selection": {                             "not": "hover"-                        }+                        },+                        "value": "transparent"                     }                 }-            }-        }-    ],-    "encoding": {-        "tooltip": [-            {-                "field": "date",-                "timeUnit": "yearmonthdate",-                "type": "temporal"             },-            {-                "field": "temp_max",-                "type": "quantitative"-            },-            {-                "field": "temp_min",-                "type": "quantitative"+            "mark": "rule",+            "selection": {+                "hover": {+                    "empty": "none",+                    "on": "mouseover",+                    "type": "single"+                }             }-        ],-        "x": {-            "field": "date",-            "timeUnit": "yearmonthdate",-            "type": "temporal"         }-    },-    "description": "Multi Series Line Chart with Tooltip"+    ] }
tests/specs/gallery/interaction/interaction11a.vl view
@@ -1,22 +1,17 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "brush": {-            "type": "interval"-        }-    },+    "description": "Drag out a rectangular brush to highlight points.",     "encoding": {         "color": {-            "value": "grey",             "condition": {                 "field": "Cylinders",                 "selection": "brush",                 "type": "ordinal"-            }+            },+            "value": "grey"         },         "x": {             "field": "Horsepower",@@ -27,5 +22,10 @@             "type": "quantitative"         }     },-    "description": "Drag out a rectangular brush to highlight points."+    "mark": "point",+    "selection": {+        "brush": {+            "type": "interval"+        }+    } }
tests/specs/gallery/interaction/interaction11b.vl view
@@ -1,28 +1,17 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "brush": {-            "init": {-                "x": [-                    55,-                    160-                ]-            },-            "type": "interval"-        }-    },+    "description": "Drag out a rectangular brush to highlight points.",     "encoding": {         "color": {-            "value": "grey",             "condition": {                 "field": "Cylinders",                 "selection": "brush",                 "type": "ordinal"-            }+            },+            "value": "grey"         },         "x": {             "field": "Horsepower",@@ -33,5 +22,16 @@             "type": "quantitative"         }     },-    "description": "Drag out a rectangular brush to highlight points."+    "mark": "point",+    "selection": {+        "brush": {+            "init": {+                "x": [+                    55,+                    160+                ]+            },+            "type": "interval"+        }+    } }
tests/specs/gallery/interaction/interaction11c.vl view
@@ -1,28 +1,17 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "brush": {-            "init": {-                "y": [-                    13,-                    37-                ]-            },-            "type": "interval"-        }-    },+    "description": "Drag out a rectangular brush to highlight points.",     "encoding": {         "color": {-            "value": "grey",             "condition": {                 "field": "Cylinders",                 "selection": "brush",                 "type": "ordinal"-            }+            },+            "value": "grey"         },         "x": {             "field": "Horsepower",@@ -33,5 +22,16 @@             "type": "quantitative"         }     },-    "description": "Drag out a rectangular brush to highlight points."+    "mark": "point",+    "selection": {+        "brush": {+            "init": {+                "y": [+                    13,+                    37+                ]+            },+            "type": "interval"+        }+    } }
tests/specs/gallery/interaction/interaction11d.vl view
@@ -1,32 +1,17 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "brush": {-            "init": {-                "x": [-                    55,-                    160-                ],-                "y": [-                    13,-                    37-                ]-            },-            "type": "interval"-        }-    },+    "description": "Drag out a rectangular brush to highlight points.",     "encoding": {         "color": {-            "value": "grey",             "condition": {                 "field": "Cylinders",                 "selection": "brush",                 "type": "ordinal"-            }+            },+            "value": "grey"         },         "x": {             "field": "Horsepower",@@ -37,5 +22,20 @@             "type": "quantitative"         }     },-    "description": "Drag out a rectangular brush to highlight points."+    "mark": "point",+    "selection": {+        "brush": {+            "init": {+                "x": [+                    55,+                    160+                ],+                "y": [+                    13,+                    37+                ]+            },+            "type": "interval"+        }+    } }
tests/specs/gallery/interaction/interaction2.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "url",-            "calculate": "'https://www.google.com/search?q=' + datum.Name"-        }-    ],-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Scatterplot with external links and tooltips",     "encoding": {         "color": {             "field": "Origin",@@ -32,5 +26,11 @@             "type": "quantitative"         }     },-    "description": "Scatterplot with external links and tooltips"+    "mark": "point",+    "transform": [+        {+            "as": "url",+            "calculate": "'https://www.google.com/search?q=' + datum.Name"+        }+    ] }
tests/specs/gallery/interaction/interaction3.vl view
@@ -1,22 +1,17 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "myBrush": {-            "type": "interval"-        }-    },+    "description": "Drag out a rectangular brush to highlight points",     "encoding": {         "color": {-            "value": "grey",             "condition": {                 "field": "Cylinders",                 "selection": "myBrush",                 "type": "ordinal"-            }+            },+            "value": "grey"         },         "x": {             "field": "Horsepower",@@ -27,5 +22,10 @@             "type": "quantitative"         }     },-    "description": "Drag out a rectangular brush to highlight points"+    "mark": "point",+    "selection": {+        "myBrush": {+            "type": "interval"+        }+    } }
tests/specs/gallery/interaction/interaction4.vl view
@@ -1,8 +1,21 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/unemployment-across-industries.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Area chart with rectangular brush",+    "encoding": {+        "x": {+            "field": "date",+            "timeUnit": "yearmonth",+            "type": "temporal"+        },+        "y": {+            "aggregate": "sum",+            "field": "count",+            "type": "quantitative"+        }+    },     "layer": [         {             "mark": "area",@@ -16,30 +29,17 @@             }         },         {+            "mark": {+                "color": "goldenrod",+                "type": "area"+            },             "transform": [                 {                     "filter": {                         "selection": "myBrush"                     }                 }-            ],-            "mark": {-                "color": "goldenrod",-                "type": "area"-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "date",-            "timeUnit": "yearmonth",-            "type": "temporal"-        },-        "y": {-            "field": "count",-            "aggregate": "sum",-            "type": "quantitative"+            ]         }-    },-    "description": "Area chart with rectangular brush"+    ] }
tests/specs/gallery/interaction/interaction5.vl view
@@ -1,23 +1,16 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "myPaintbrush": {-            "nearest": true,-            "type": "multi",-            "on": "mouseover"-        }-    },+    "description": "Mouse over individual points or select multiple points with the shift key",     "encoding": {         "size": {-            "value": 50,             "condition": {-                "value": 300,-                "selection": "myPaintbrush"-            }+                "selection": "myPaintbrush",+                "value": 300+            },+            "value": 50         },         "x": {             "field": "Horsepower",@@ -28,5 +21,12 @@             "type": "quantitative"         }     },-    "description": "Mouse over individual points or select multiple points with the shift key"+    "mark": "point",+    "selection": {+        "myPaintbrush": {+            "nearest": true,+            "on": "mouseover",+            "type": "multi"+        }+    } }
tests/specs/gallery/interaction/interaction6.vl view
@@ -1,15 +1,9 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "myGrid": {-            "bind": "scales",-            "type": "interval"-        }-    },+    "description": "Drag to pan. Zoom in or out with mousewheel/zoom gesture.",     "encoding": {         "size": {             "field": "Cylinders",@@ -36,5 +30,11 @@             "type": "quantitative"         }     },-    "description": "Drag to pan. Zoom in or out with mousewheel/zoom gesture."+    "mark": "circle",+    "selection": {+        "myGrid": {+            "bind": "scales",+            "type": "interval"+        }+    } }
tests/specs/gallery/interaction/interaction7.vl view
@@ -1,66 +1,63 @@ {-    "transform": [-        {-            "as": "Year",-            "calculate": "year(datum.Year)"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Drag the sliders to highlight points",+    "encoding": {+        "x": {+            "field": "Horsepower",+            "type": "quantitative"+        },+        "y": {+            "field": "Miles_per_Gallon",+            "type": "quantitative"+        }+    },     "layer": [         {+            "encoding": {+                "color": {+                    "condition": {+                        "field": "Origin",+                        "selection": "CylYr",+                        "type": "nominal"+                    },+                    "value": "grey"+                }+            },             "mark": "circle",             "selection": {                 "CylYr": {-                    "init": {-                        "Cylinders": 4,-                        "Year": 1977-                    },                     "bind": {                         "Cylinders": {-                            "max": 8,                             "input": "range",+                            "max": 8,+                            "min": 3,                             "name": "Cylinders ",-                            "step": 1,-                            "min": 3+                            "step": 1                         },                         "Year": {-                            "max": 1981,                             "input": "range",+                            "max": 1981,+                            "min": 1969,                             "name": "Year ",-                            "step": 1,-                            "min": 1969+                            "step": 1                         }                     },-                    "type": "single",                     "fields": [                         "Cylinders",                         "Year"-                    ]-                }-            },-            "encoding": {-                "color": {-                    "value": "grey",-                    "condition": {-                        "field": "Origin",-                        "selection": "CylYr",-                        "type": "nominal"-                    }+                    ],+                    "init": {+                        "Cylinders": 4,+                        "Year": 1977+                    },+                    "type": "single"                 }             }         },         {-            "transform": [-                {-                    "filter": {-                        "selection": "CylYr"-                    }-                }-            ],-            "mark": "circle",             "encoding": {                 "color": {                     "field": "Origin",@@ -69,18 +66,21 @@                 "size": {                     "value": 100                 }-            }+            },+            "mark": "circle",+            "transform": [+                {+                    "filter": {+                        "selection": "CylYr"+                    }+                }+            ]         }     ],-    "encoding": {-        "x": {-            "field": "Horsepower",-            "type": "quantitative"-        },-        "y": {-            "field": "Miles_per_Gallon",-            "type": "quantitative"+    "transform": [+        {+            "as": "Year",+            "calculate": "year(datum.Year)"         }-    },-    "description": "Drag the sliders to highlight points"+    ] }
tests/specs/gallery/interaction/interaction8.vl view
@@ -1,43 +1,43 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "encoding": {+        "y": {+            "aggregate": "mean",+            "field": "precipitation",+            "type": "quantitative"+        }+    },     "layer": [         {-            "mark": "bar",-            "selection": {-                "myBrush": {-                    "encodings": [-                        "x"-                    ],-                    "type": "interval"-                }-            },             "encoding": {                 "opacity": {-                    "value": 0.7,                     "condition": {-                        "value": 1,-                        "selection": "myBrush"-                    }+                        "selection": "myBrush",+                        "value": 1+                    },+                    "value": 0.7                 },                 "x": {                     "field": "date",                     "timeUnit": "month",                     "type": "ordinal"                 }+            },+            "mark": "bar",+            "selection": {+                "myBrush": {+                    "encodings": [+                        "x"+                    ],+                    "type": "interval"+                }             }         },         {-            "transform": [-                {-                    "filter": {-                        "selection": "myBrush"-                    }-                }-            ],-            "mark": "rule",+            "description": "Drag over bars to update selection average",             "encoding": {                 "color": {                     "value": "firebrick"@@ -46,14 +46,14 @@                     "value": 3                 }             },-            "description": "Drag over bars to update selection average"-        }-    ],-    "encoding": {-        "y": {-            "field": "precipitation",-            "aggregate": "mean",-            "type": "quantitative"+            "mark": "rule",+            "transform": [+                {+                    "filter": {+                        "selection": "myBrush"+                    }+                }+            ]         }-    }+    ] }
tests/specs/gallery/interaction/interaction9.vl view
@@ -1,88 +1,75 @@ {-    "height": 400,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "https://vega.github.io/vega-lite/data/stocks.csv",         "format": {             "parse": {                 "date": "date"             }-        }+        },+        "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Displays tooltips for all stock prices of the hovered time",+    "height": 400,     "layer": [         {+            "encoding": {+                "color": {+                    "field": "symbol",+                    "type": "nominal"+                },+                "x": {+                    "field": "date",+                    "type": "temporal"+                },+                "y": {+                    "field": "price",+                    "type": "quantitative"+                }+            },             "layer": [                 {                     "mark": "line"                 },                 {+                    "encoding": {+                        "opacity": {+                            "condition": {+                                "selection": "myTooltip",+                                "value": 1+                            },+                            "value": 0+                        }+                    },                     "mark": "point",                     "selection": {                         "myTooltip": {-                            "nearest": true,                             "empty": "none",                             "encodings": [                                 "x"                             ],-                            "type": "single",-                            "on": "mouseover"-                        }-                    },-                    "encoding": {-                        "opacity": {-                            "value": 0,-                            "condition": {-                                "value": 1,-                                "selection": "myTooltip"-                            }+                            "nearest": true,+                            "on": "mouseover",+                            "type": "single"                         }                     }                 }-            ],-            "encoding": {-                "color": {-                    "field": "symbol",-                    "type": "nominal"-                },-                "x": {-                    "field": "date",-                    "type": "temporal"-                },-                "y": {-                    "field": "price",-                    "type": "quantitative"-                }-            }+            ]         },         {-            "transform": [-                {-                    "filter": {-                        "selection": "myTooltip"-                    }-                }-            ],             "layer": [                 {-                    "mark": {-                        "color": "gray",-                        "type": "rule"-                    },                     "encoding": {                         "x": {                             "field": "date",                             "type": "temporal"                         }+                    },+                    "mark": {+                        "color": "gray",+                        "type": "rule"                     }                 },                 {-                    "mark": {-                        "dx": 5,-                        "dy": -5,-                        "align": "left",-                        "type": "text"-                    },                     "encoding": {                         "color": {                             "field": "symbol",@@ -100,10 +87,23 @@                             "field": "price",                             "type": "quantitative"                         }+                    },+                    "mark": {+                        "align": "left",+                        "dx": 5,+                        "dy": -5,+                        "type": "text"                     }                 }+            ],+            "transform": [+                {+                    "filter": {+                        "selection": "myTooltip"+                    }+                }             ]         }     ],-    "description": "Displays tooltips for all stock prices of the hovered time"+    "width": 800 }
tests/specs/gallery/interaction/interactivelinehover.vl view
@@ -1,9 +1,5 @@ {-    "transform": [-        {-            "filter": "datum.symbol!=='IBM'"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null@@ -12,100 +8,104 @@     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Multi-series line chart with labels and interactive highlight on hover.  We also set the selection's initial value to provide a better screenshot",+    "encoding": {+        "color": {+            "condition": {+                "field": "symbol",+                "legend": null,+                "selection": "hover",+                "type": "nominal"+            },+            "value": "grey"+        },+        "opacity": {+            "condition": {+                "selection": "hover",+                "value": 1+            },+            "value": 0.2+        }+    },     "layer": [         {+            "encoding": {+                "x": {+                    "field": "date",+                    "title": "date",+                    "type": "temporal"+                },+                "y": {+                    "field": "price",+                    "title": "price",+                    "type": "quantitative"+                }+            },             "layer": [                 {+                    "description": "transparent layer to make it easier to trigger selection",                     "mark": {-                        "strokeWidth": 8,                         "stroke": "transparent",+                        "strokeWidth": 8,                         "type": "line"                     },                     "selection": {                         "hover": {+                            "empty": "none",+                            "fields": [+                                "symbol"+                            ],                             "init": {                                 "symbol": "AAPL"                             },-                            "empty": "none",-                            "type": "single",                             "on": "mouseover",-                            "fields": [-                                "symbol"-                            ]+                            "type": "single"                         }-                    },-                    "description": "transparent layer to make it easier to trigger selection"+                    }                 },                 {                     "mark": "line"                 }-            ],+            ]+        },+        {             "encoding": {                 "x": {+                    "aggregate": "max",                     "field": "date",-                    "title": "date",                     "type": "temporal"                 },                 "y": {+                    "aggregate": {+                        "argmax": "date"+                    },                     "field": "price",-                    "title": "price",                     "type": "quantitative"                 }-            }-        },-        {+            },             "layer": [                 {                     "mark": "circle"                 },                 {-                    "mark": {-                        "dx": 4,-                        "align": "left",-                        "type": "text"-                    },                     "encoding": {                         "text": {                             "field": "symbol",                             "type": "nominal"                         }-                    }-                }-            ],-            "encoding": {-                "x": {-                    "field": "date",-                    "aggregate": "max",-                    "type": "temporal"-                },-                "y": {-                    "field": "price",-                    "aggregate": {-                        "argmax": "date"                     },-                    "type": "quantitative"+                    "mark": {+                        "align": "left",+                        "dx": 4,+                        "type": "text"+                    }                 }-            }+            ]         }     ],-    "encoding": {-        "color": {-            "value": "grey",-            "condition": {-                "field": "symbol",-                "selection": "hover",-                "type": "nominal",-                "legend": null-            }-        },-        "opacity": {-            "value": 0.2,-            "condition": {-                "value": 1,-                "selection": "hover"-            }+    "transform": [+        {+            "filter": "datum.symbol!=='IBM'"         }-    },-    "description": "Multi-series line chart with labels and interactive highlight on hover.  We also set the selection's initial value to provide a better screenshot"+    ] }
tests/specs/gallery/label/baselines.vl view
@@ -1,33 +1,8 @@ {-    "config": {-        "mark": {-            "fontStyle": "italic",-            "fontSize": 20,-            "lineHeight": 30-        },-        "title": {-            "font": "Comic Sans MS"-        }-    },-    "data": {-        "values": [-            {-                "x": 5,-                "y": 5-            },-            {-                "x": 30,-                "y": 30-            }-        ]-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "columns": 2,     "concat": [         {-            "mark": {-                "type": "text",-                "baseline": "top"-            },-            "title": "top",             "encoding": {                 "text": {                     "value": [@@ -36,6 +11,9 @@                     ]                 },                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "x",                     "scale": {                         "domain": [@@ -44,12 +22,12 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 },                 "y": {+                    "axis": {+                        "title": null+                    },                     "field": "y",                     "scale": {                         "domain": [@@ -58,19 +36,16 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }-        },-        {+            },             "mark": {-                "type": "text",-                "baseline": "line-top"+                "baseline": "top",+                "type": "text"             },-            "title": "line-top",+            "title": "top"+        },+        {             "encoding": {                 "text": {                     "value": [@@ -79,6 +54,9 @@                     ]                 },                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "x",                     "scale": {                         "domain": [@@ -87,12 +65,12 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 },                 "y": {+                    "axis": {+                        "title": null+                    },                     "field": "y",                     "scale": {                         "domain": [@@ -101,19 +79,16 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }-        },-        {+            },             "mark": {-                "type": "text",-                "baseline": "middle"+                "baseline": "line-top",+                "type": "text"             },-            "title": "middle",+            "title": "line-top"+        },+        {             "encoding": {                 "text": {                     "value": [@@ -122,6 +97,9 @@                     ]                 },                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "x",                     "scale": {                         "domain": [@@ -130,12 +108,12 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 },                 "y": {+                    "axis": {+                        "title": null+                    },                     "field": "y",                     "scale": {                         "domain": [@@ -144,19 +122,16 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }-        },-        {+            },             "mark": {-                "type": "text",-                "baseline": "alphabetic"+                "baseline": "middle",+                "type": "text"             },-            "title": "baseline",+            "title": "middle"+        },+        {             "encoding": {                 "text": {                     "value": [@@ -165,6 +140,9 @@                     ]                 },                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "x",                     "scale": {                         "domain": [@@ -173,12 +151,12 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 },                 "y": {+                    "axis": {+                        "title": null+                    },                     "field": "y",                     "scale": {                         "domain": [@@ -187,19 +165,16 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }-        },-        {+            },             "mark": {-                "type": "text",-                "baseline": "bottom"+                "baseline": "alphabetic",+                "type": "text"             },-            "title": "bottom",+            "title": "baseline"+        },+        {             "encoding": {                 "text": {                     "value": [@@ -208,6 +183,9 @@                     ]                 },                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "x",                     "scale": {                         "domain": [@@ -216,12 +194,12 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 },                 "y": {+                    "axis": {+                        "title": null+                    },                     "field": "y",                     "scale": {                         "domain": [@@ -230,19 +208,16 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }-        },-        {+            },             "mark": {-                "type": "text",-                "baseline": "line-bottom"+                "baseline": "bottom",+                "type": "text"             },-            "title": "line-bottom",+            "title": "bottom"+        },+        {             "encoding": {                 "text": {                     "value": [@@ -251,6 +226,9 @@                     ]                 },                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "x",                     "scale": {                         "domain": [@@ -259,12 +237,12 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 },                 "y": {+                    "axis": {+                        "title": null+                    },                     "field": "y",                     "scale": {                         "domain": [@@ -273,14 +251,36 @@                         ],                         "nice": false                     },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }+            },+            "mark": {+                "baseline": "line-bottom",+                "type": "text"+            },+            "title": "line-bottom"         }     ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "columns": 2+    "config": {+        "mark": {+            "fontSize": 20,+            "fontStyle": "italic",+            "lineHeight": 30+        },+        "title": {+            "font": "Comic Sans MS"+        }+    },+    "data": {+        "values": [+            {+                "x": 5,+                "y": 5+            },+            {+                "x": 30,+                "y": 30+            }+        ]+    } }
tests/specs/gallery/label/label1.vl view
@@ -1,10 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {             "label": {-                "dx": 3,                 "align": "left",-                "baseline": "middle"+                "baseline": "middle",+                "dx": 3             }         }     },@@ -24,33 +25,32 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A simple bar chart with embedded data labels",+    "encoding": {+        "x": {+            "field": "b",+            "type": "quantitative"+        },+        "y": {+            "field": "a",+            "type": "ordinal"+        }+    },     "layer": [         {             "mark": "bar"         },         {-            "mark": {-                "style": "label",-                "type": "text"-            },             "encoding": {                 "text": {                     "field": "b",                     "type": "quantitative"                 }+            },+            "mark": {+                "style": "label",+                "type": "text"             }         }-    ],-    "encoding": {-        "x": {-            "field": "b",-            "type": "quantitative"-        },-        "y": {-            "field": "a",-            "type": "ordinal"-        }-    },-    "description": "A simple bar chart with embedded data labels"+    ] }
tests/specs/gallery/label/label2.vl view
@@ -1,52 +1,52 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "text": {-            "baseline": "middle"-        },         "scale": {-            "xReverse": false,             "bandPaddingInner": 0,-            "bandPaddingOuter": 0+            "bandPaddingOuter": 0,+            "xReverse": false+        },+        "text": {+            "baseline": "middle"         }     },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Layering text over 'heatmap'",+    "encoding": {+        "x": {+            "field": "Cylinders",+            "type": "ordinal"+        },+        "y": {+            "field": "Origin",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": "rect",             "encoding": {                 "color": {-                    "field": "*",                     "aggregate": "count",+                    "field": "*",                     "type": "quantitative"                 }-            }+            },+            "mark": "rect"         },         {-            "mark": "text",             "encoding": {                 "color": {                     "value": "white"                 },                 "text": {-                    "field": "*",                     "aggregate": "count",+                    "field": "*",                     "type": "quantitative"                 }-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "Cylinders",-            "type": "ordinal"-        },-        "y": {-            "field": "Origin",-            "type": "ordinal"+            },+            "mark": "text"         }-    },-    "description": "Layering text over 'heatmap'"+    ] }
tests/specs/gallery/label/label2r.vl view
@@ -1,52 +1,52 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "text": {-            "baseline": "middle"-        },         "scale": {-            "xReverse": true,             "bandPaddingInner": 0,-            "bandPaddingOuter": 0+            "bandPaddingOuter": 0,+            "xReverse": true+        },+        "text": {+            "baseline": "middle"         }     },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Layering text over 'heatmap'",+    "encoding": {+        "x": {+            "field": "Cylinders",+            "type": "ordinal"+        },+        "y": {+            "field": "Origin",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": "rect",             "encoding": {                 "color": {-                    "field": "*",                     "aggregate": "count",+                    "field": "*",                     "type": "quantitative"                 }-            }+            },+            "mark": "rect"         },         {-            "mark": "text",             "encoding": {                 "color": {                     "value": "white"                 },                 "text": {-                    "field": "*",                     "aggregate": "count",+                    "field": "*",                     "type": "quantitative"                 }-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "Cylinders",-            "type": "ordinal"-        },-        "y": {-            "field": "Origin",-            "type": "ordinal"+            },+            "mark": "text"         }-    },-    "description": "Layering text over 'heatmap'"+    ] }
tests/specs/gallery/label/label3.vl view
@@ -1,64 +1,90 @@ {-    "transform": [-        {-            "as": "year",-            "calculate": "year(datum.Date)"-        },-        {-            "as": "month",-            "calculate": "month(datum.Date)"-        },-        {-            "as": "decade",-            "calculate": "floor(datum.year / 10)"-        },-        {-            "as": "scaled_date",-            "calculate": "(datum.year % 10) + (datum.month / 12)"-        }-    ],-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },     "data": {-        "url": "https://vega.github.io/vega-lite/data/co2-concentration.csv",         "format": {             "parse": {                 "Date": "utc:'%Y-%m-%d'"             }+        },+        "url": "https://vega.github.io/vega-lite/data/co2-concentration.csv"+    },+    "description": "Carbon dioxide in the atmosphere.",+    "encoding": {+        "x": {+            "axis": {+                "tickCount": 10,+                "title": "Year into decade",+                "values": [+                    1,+                    2,+                    3,+                    4,+                    5,+                    6,+                    7,+                    8,+                    9+                ]+            },+            "field": "scaled_date",+            "type": "quantitative"+        },+        "y": {+            "axis": {+                "title": "CO₂ concentration in ppm"+            },+            "field": "CO2",+            "scale": {+                "zero": false+            },+            "type": "quantitative"         }     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "height": 500,     "layer": [         {-            "mark": {-                "orient": "vertical",-                "type": "line"-            },             "encoding": {                 "color": {                     "field": "decade",-                    "type": "nominal",-                    "legend": null+                    "legend": null,+                    "type": "nominal"                 }+            },+            "mark": {+                "orient": "vertical",+                "type": "line"             }         },         {+            "encoding": {+                "text": {+                    "field": "aggregated.year",+                    "type": "nominal"+                }+            },+            "mark": {+                "align": "left",+                "baseline": "top",+                "dx": 3,+                "dy": 1,+                "type": "text"+            },             "transform": [                 {-                    "groupby": [-                        "decade"-                    ],                     "aggregate": [                         {-                            "op": "argmin",                             "as": "aggregated",-                            "field": "scaled_date"+                            "field": "scaled_date",+                            "op": "argmin"                         }+                    ],+                    "groupby": [+                        "decade"                     ]                 },                 {@@ -69,33 +95,33 @@                     "as": "CO2",                     "calculate": "datum.aggregated.CO2"                 }-            ],-            "mark": {-                "dx": 3,-                "dy": 1,-                "align": "left",-                "type": "text",-                "baseline": "top"-            },+            ]+        },+        {             "encoding": {                 "text": {                     "field": "aggregated.year",                     "type": "nominal"                 }-            }-        },-        {+            },+            "mark": {+                "align": "left",+                "baseline": "bottom",+                "dx": 3,+                "dy": 1,+                "type": "text"+            },             "transform": [                 {-                    "groupby": [-                        "decade"-                    ],                     "aggregate": [                         {-                            "op": "argmax",                             "as": "aggregated",-                            "field": "scaled_date"+                            "field": "scaled_date",+                            "op": "argmax"                         }+                    ],+                    "groupby": [+                        "decade"                     ]                 },                 {@@ -106,52 +132,26 @@                     "as": "CO2",                     "calculate": "datum.aggregated.CO2"                 }-            ],-            "mark": {-                "dx": 3,-                "dy": 1,-                "align": "left",-                "type": "text",-                "baseline": "bottom"-            },-            "encoding": {-                "text": {-                    "field": "aggregated.year",-                    "type": "nominal"-                }-            }+            ]         }     ],-    "encoding": {-        "x": {-            "field": "scaled_date",-            "type": "quantitative",-            "axis": {-                "values": [-                    1,-                    2,-                    3,-                    4,-                    5,-                    6,-                    7,-                    8,-                    9-                ],-                "tickCount": 10,-                "title": "Year into decade"-            }+    "transform": [+        {+            "as": "year",+            "calculate": "year(datum.Date)"         },-        "y": {-            "field": "CO2",-            "scale": {-                "zero": false-            },-            "type": "quantitative",-            "axis": {-                "title": "CO₂ concentration in ppm"-            }+        {+            "as": "month",+            "calculate": "month(datum.Date)"+        },+        {+            "as": "decade",+            "calculate": "floor(datum.year / 10)"+        },+        {+            "as": "scaled_date",+            "calculate": "(datum.year % 10) + (datum.month / 12)"         }-    },-    "description": "Carbon dioxide in the atmosphere."+    ],+    "width": 800 }
tests/specs/gallery/label/label4.vl view
@@ -1,99 +1,90 @@ {     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "The PM2.5 value of Beijing observed 15 days, highlighting the days when PM2.5 level is hazardous to human health. Data source https://chartaccent.github.io/chartaccent.html",     "layer": [         {             "data": {                 "values": [                     {-                        "Value": 54.8,-                        "Day": 1+                        "Day": 1,+                        "Value": 54.8                     },                     {-                        "Value": 112.1,-                        "Day": 2+                        "Day": 2,+                        "Value": 112.1                     },                     {-                        "Value": 63.6,-                        "Day": 3+                        "Day": 3,+                        "Value": 63.6                     },                     {-                        "Value": 37.6,-                        "Day": 4+                        "Day": 4,+                        "Value": 37.6                     },                     {-                        "Value": 79.7,-                        "Day": 5+                        "Day": 5,+                        "Value": 79.7                     },                     {-                        "Value": 137.9,-                        "Day": 6+                        "Day": 6,+                        "Value": 137.9                     },                     {-                        "Value": 120.1,-                        "Day": 7+                        "Day": 7,+                        "Value": 120.1                     },                     {-                        "Value": 103.3,-                        "Day": 8+                        "Day": 8,+                        "Value": 103.3                     },                     {-                        "Value": 394.8,-                        "Day": 9+                        "Day": 9,+                        "Value": 394.8                     },                     {-                        "Value": 199.5,-                        "Day": 10+                        "Day": 10,+                        "Value": 199.5                     },                     {-                        "Value": 72.3,-                        "Day": 11+                        "Day": 11,+                        "Value": 72.3                     },                     {-                        "Value": 51.1,-                        "Day": 12+                        "Day": 12,+                        "Value": 51.1                     },                     {-                        "Value": 112,-                        "Day": 13+                        "Day": 13,+                        "Value": 112                     },                     {-                        "Value": 174.5,-                        "Day": 14+                        "Day": 14,+                        "Value": 174.5                     },                     {-                        "Value": 130.5,-                        "Day": 15+                        "Day": 15,+                        "Value": 130.5                     }                 ]             },             "layer": [                 {-                    "mark": "bar",                     "encoding": {                         "x": {-                            "field": "Day",-                            "type": "ordinal",                             "axis": {                                 "labelAngle": 0-                            }+                            },+                            "field": "Day",+                            "type": "ordinal"                         },                         "y": {                             "field": "Value",                             "type": "quantitative"                         }-                    }+                    },+                    "mark": "bar"                 },                 {-                    "transform": [-                        {-                            "filter": "datum.Value >= 300"-                        },-                        {-                            "as": "baseline",-                            "calculate": "300"-                        }-                    ],-                    "mark": "bar",                     "encoding": {                         "color": {                             "value": "#e45755"@@ -102,15 +93,25 @@                             "field": "Day",                             "type": "ordinal"                         },-                        "y2": {-                            "field": "Value"-                        },                         "y": {                             "field": "baseline",                             "title": "PM2.5 Value",                             "type": "quantitative"+                        },+                        "y2": {+                            "field": "Value"                         }-                    }+                    },+                    "mark": "bar",+                    "transform": [+                        {+                            "filter": "datum.Value >= 300"+                        },+                        {+                            "as": "baseline",+                            "calculate": "300"+                        }+                    ]                 }             ]         },@@ -118,28 +119,27 @@             "data": {                 "values": {}             },+            "encoding": {+                "y": {+                    "datum": 300+                }+            },             "layer": [                 {                     "mark": "rule"                 },                 {                     "mark": {+                        "align": "right",+                        "baseline": "bottom",                         "dx": -2,                         "dy": -2,                         "text": "hazardous",-                        "align": "right",-                        "x": "width",                         "type": "text",-                        "baseline": "bottom"+                        "x": "width"                     }                 }-            ],-            "encoding": {-                "y": {-                    "datum": 300-                }-            }+            ]         }-    ],-    "description": "The PM2.5 value of Beijing observed 15 days, highlighting the days when PM2.5 level is hazardous to human health. Data source https://chartaccent.github.io/chartaccent.html"+    ] }
tests/specs/gallery/label/label5.vl view
@@ -1,11 +1,11 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Monthly precipitation with mean value overlay",     "layer": [         {-            "mark": "bar",             "encoding": {                 "x": {                     "field": "date",@@ -13,14 +13,14 @@                     "type": "ordinal"                 },                 "y": {-                    "field": "precipitation",                     "aggregate": "mean",+                    "field": "precipitation",                     "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": "rule",             "encoding": {                 "color": {                     "value": "red"@@ -29,12 +29,12 @@                     "value": 3                 },                 "y": {-                    "field": "precipitation",                     "aggregate": "mean",+                    "field": "precipitation",                     "type": "quantitative"                 }-            }+            },+            "mark": "rule"         }-    ],-    "description": "Monthly precipitation with mean value overlay"+    ] }
tests/specs/gallery/label/label6.vl view
@@ -1,26 +1,26 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Histogram with global mean overlay",     "layer": [         {-            "mark": "bar",             "encoding": {                 "x": {-                    "field": "IMDB_Rating",+                    "axis": null,                     "bin": true,-                    "type": "quantitative",-                    "axis": null+                    "field": "IMDB_Rating",+                    "type": "quantitative"                 },                 "y": {                     "aggregate": "count",                     "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": "rule",             "encoding": {                 "color": {                     "value": "red"@@ -29,12 +29,12 @@                     "value": 5                 },                 "x": {-                    "field": "IMDB_Rating",                     "aggregate": "mean",+                    "field": "IMDB_Rating",                     "type": "quantitative"                 }-            }+            },+            "mark": "rule"         }-    ],-    "description": "Histogram with global mean overlay"+    ] }
tests/specs/gallery/label/label7.vl view
@@ -1,247 +1,247 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {+        "format": {+            "parse": {+                "year": "date:'%Y'"+            }+        },         "values": [             {-                "year": "1875",-                "population": 1309+                "population": 1309,+                "year": "1875"             },             {-                "year": "1890",-                "population": 1558+                "population": 1558,+                "year": "1890"             },             {-                "year": "1910",-                "population": 4512+                "population": 4512,+                "year": "1910"             },             {-                "year": "1925",-                "population": 8180+                "population": 8180,+                "year": "1925"             },             {-                "year": "1933",-                "population": 15915+                "population": 15915,+                "year": "1933"             },             {-                "year": "1939",-                "population": 24824+                "population": 24824,+                "year": "1939"             },             {-                "year": "1946",-                "population": 28275+                "population": 28275,+                "year": "1946"             },             {-                "year": "1950",-                "population": 29189+                "population": 29189,+                "year": "1950"             },             {-                "year": "1964",-                "population": 29881+                "population": 29881,+                "year": "1964"             },             {-                "year": "1971",-                "population": 26007+                "population": 26007,+                "year": "1971"             },             {-                "year": "1981",-                "population": 24029+                "population": 24029,+                "year": "1981"             },             {-                "year": "1985",-                "population": 23340+                "population": 23340,+                "year": "1985"             },             {-                "year": "1989",-                "population": 22307+                "population": 22307,+                "year": "1989"             },             {-                "year": "1990",-                "population": 22087+                "population": 22087,+                "year": "1990"             },             {-                "year": "1991",-                "population": 22139+                "population": 22139,+                "year": "1991"             },             {-                "year": "1992",-                "population": 22105+                "population": 22105,+                "year": "1992"             },             {-                "year": "1993",-                "population": 22242+                "population": 22242,+                "year": "1993"             },             {-                "year": "1994",-                "population": 22801+                "population": 22801,+                "year": "1994"             },             {-                "year": "1995",-                "population": 24273+                "population": 24273,+                "year": "1995"             },             {-                "year": "1996",-                "population": 25640+                "population": 25640,+                "year": "1996"             },             {-                "year": "1997",-                "population": 27393+                "population": 27393,+                "year": "1997"             },             {-                "year": "1998",-                "population": 29505+                "population": 29505,+                "year": "1998"             },             {-                "year": "1999",-                "population": 32124+                "population": 32124,+                "year": "1999"             },             {-                "year": "2000",-                "population": 33791+                "population": 33791,+                "year": "2000"             },             {-                "year": "2001",-                "population": 35297+                "population": 35297,+                "year": "2001"             },             {-                "year": "2002",-                "population": 36179+                "population": 36179,+                "year": "2002"             },             {-                "year": "2003",-                "population": 36829+                "population": 36829,+                "year": "2003"             },             {-                "year": "2004",-                "population": 37493+                "population": 37493,+                "year": "2004"             },             {-                "year": "2005",-                "population": 38376+                "population": 38376,+                "year": "2005"             },             {-                "year": "2006",-                "population": 39008+                "population": 39008,+                "year": "2006"             },             {-                "year": "2007",-                "population": 39366+                "population": 39366,+                "year": "2007"             },             {-                "year": "2008",-                "population": 39821+                "population": 39821,+                "year": "2008"             },             {-                "year": "2009",-                "population": 40179+                "population": 40179,+                "year": "2009"             },             {-                "year": "2010",-                "population": 40511+                "population": 40511,+                "year": "2010"             },             {-                "year": "2011",-                "population": 40465+                "population": 40465,+                "year": "2011"             },             {-                "year": "2012",-                "population": 40905+                "population": 40905,+                "year": "2012"             },             {-                "year": "2013",-                "population": 41258+                "population": 41258,+                "year": "2013"             },             {-                "year": "2014",-                "population": 41777-            }-        ],-        "format": {-            "parse": {-                "year": "date:'%Y'"+                "population": 41777,+                "year": "2014"             }-        }+        ]     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "The population of the German city of Falkensee over time with annotated time periods highlighted",     "layer": [         {-            "mark": "rect",             "data": {+                "format": {+                    "parse": {+                        "end": "date:'%Y'",+                        "start": "date:'%Y'"+                    }+                },                 "values": [                     {+                        "end": "1945",                         "event": "Nazi Rule",-                        "start": "1933",-                        "end": "1945"+                        "start": "1933"                     },                     {+                        "end": "1989",                         "event": "GDR (East Germany)",-                        "start": "1948",-                        "end": "1989"-                    }-                ],-                "format": {-                    "parse": {-                        "start": "date:'%Y'",-                        "end": "date:'%Y'"+                        "start": "1948"                     }-                }+                ]             },             "encoding": {-                "x2": {-                    "field": "end",-                    "timeUnit": "year"-                },                 "color": {                     "field": "event",                     "type": "nominal"                 },                 "x": {+                    "axis": null,                     "field": "start",                     "timeUnit": "year",-                    "type": "temporal",-                    "axis": null+                    "type": "temporal"+                },+                "x2": {+                    "field": "end",+                    "timeUnit": "year"                 }-            }+            },+            "mark": "rect"         },         {-            "mark": "line",             "encoding": {                 "color": {                     "value": "#333"                 },                 "x": {-                    "field": "year",-                    "timeUnit": "year",-                    "type": "temporal",                     "axis": {                         "title": null-                    }+                    },+                    "field": "year",+                    "timeUnit": "year",+                    "type": "temporal"                 },                 "y": {                     "field": "population",                     "type": "quantitative"                 }-            }+            },+            "mark": "line"         },         {-            "mark": "point",             "encoding": {                 "color": {                     "value": "#333"                 },                 "x": {-                    "field": "year",-                    "timeUnit": "year",-                    "type": "temporal",                     "axis": {                         "title": null-                    }+                    },+                    "field": "year",+                    "timeUnit": "year",+                    "type": "temporal"                 },                 "y": {                     "field": "population",                     "type": "quantitative"                 }-            }+            },+            "mark": "point"         }     ],-    "description": "The population of the German city of Falkensee over time with annotated time periods highlighted"+    "width": 500 }
tests/specs/gallery/label/label8.vl view
@@ -1,5 +1,5 @@ {-    "height": 175,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null@@ -8,1019 +8,1019 @@     "data": {         "name": "medians"     },-    "width": 250,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Questionnaire Ratings",-    "layer": [-        {-            "transform": [-                {-                    "filter": "datum.name != 'Toolbar_First'"-                },-                {-                    "filter": "datum.name != 'Tablet_First'"-                },-                {-                    "filter": "datum.name != 'Participant ID'"-                }-            ],-            "mark": {-                "color": "#6eb4fd",-                "type": "circle"+    "datasets": {+        "medians": [+            {+                "hi": "Hard",+                "lo": "Easy",+                "median": 1.999976,+                "name": "Identify Errors:"             },-            "data": {-                "name": "values"+            {+                "hi": "Hard",+                "lo": "Easy",+                "median": 2,+                "name": "Fix Errors:"             },-            "encoding": {-                "size": {-                    "aggregate": "count",-                    "type": "quantitative",-                    "legend": {-                        "offset": 75,-                        "title": "Number of Ratings"-                    }-                },-                "x": {-                    "field": "value",-                    "scale": {-                        "domain": [-                            0,-                            6-                        ]-                    },-                    "type": "quantitative",-                    "axis": {-                        "values": [-                            1,-                            2,-                            3,-                            4,-                            5-                        ],-                        "grid": false-                    }-                }-            }-        },-        {-            "mark": {-                "color": "black",-                "type": "tick"+            {+                "hi": "Gesture",+                "lo": "Toolbar",+                "median": 1.999969,+                "name": "Easier to Fix:"             },-            "encoding": {-                "x": {-                    "field": "median",-                    "scale": {-                        "domain": [-                            0,-                            6-                        ]-                    },-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }-                }-            }-        },-        {-            "mark": {-                "align": "right",-                "x": -5,-                "type": "text"+            {+                "hi": "Gesture",+                "lo": "Toolbar",+                "median": 2.500045,+                "name": "Faster to Fix:"             },-            "encoding": {-                "text": {-                    "field": "lo",-                    "type": "nominal"-                }-            }-        },-        {-            "mark": {-                "align": "left",-                "x": 255,-                "type": "text"+            {+                "hi": "Gesture",+                "lo": "Toolbar",+                "median": 1.500022,+                "name": "Easier on Phone:"             },-            "encoding": {-                "text": {-                    "field": "hi",-                    "type": "nominal"-                }-            }-        }-    ],-    "encoding": {-        "y": {-            "field": "name",-            "sort": null,-            "type": "nominal",-            "axis": {-                "offset": 50,-                "domain": false,-                "labelFontWeight": "bold",-                "grid": true,-                "title": null,-                "ticks": false+            {+                "hi": "Gesture",+                "lo": "Toolbar",+                "median": 2.99998,+                "name": "Easier on Tablet:"+            },+            {+                "hi": "Tablet",+                "lo": "Phone",+                "median": 4.500007,+                "name": "Device Preference:"             }-        }-    },-    "datasets": {+        ],         "values": [             {-                "value": "P1",+                "id": "P1",                 "name": "Participant ID",-                "id": "P1"+                "value": "P1"             },             {-                "value": "2",+                "id": "P1",                 "name": "Identify Errors:",-                "id": "P1"+                "value": "2"             },             {-                "value": "2",+                "id": "P1",                 "name": "Fix Errors:",-                "id": "P1"+                "value": "2"             },             {-                "value": "3",+                "id": "P1",                 "name": "Easier to Fix:",-                "id": "P1"+                "value": "3"             },             {-                "value": "4",+                "id": "P1",                 "name": "Faster to Fix:",-                "id": "P1"+                "value": "4"             },             {-                "value": "2",+                "id": "P1",                 "name": "Easier on Phone:",-                "id": "P1"+                "value": "2"             },             {-                "value": "5",+                "id": "P1",                 "name": "Easier on Tablet:",-                "id": "P1"+                "value": "5"             },             {-                "value": "5",+                "id": "P1",                 "name": "Device Preference:",-                "id": "P1"+                "value": "5"             },             {-                "value": "1",+                "id": "P1",                 "name": "Tablet_First",-                "id": "P1"+                "value": "1"             },             {-                "value": "1",+                "id": "P1",                 "name": "Toolbar_First",-                "id": "P1"+                "value": "1"             },             {-                "value": "P2",+                "id": "P2",                 "name": "Participant ID",-                "id": "P2"+                "value": "P2"             },             {-                "value": "2",+                "id": "P2",                 "name": "Identify Errors:",-                "id": "P2"+                "value": "2"             },             {-                "value": "3",+                "id": "P2",                 "name": "Fix Errors:",-                "id": "P2"+                "value": "3"             },             {-                "value": "4",+                "id": "P2",                 "name": "Easier to Fix:",-                "id": "P2"+                "value": "4"             },             {-                "value": "5",+                "id": "P2",                 "name": "Faster to Fix:",-                "id": "P2"+                "value": "5"             },             {-                "value": "5",+                "id": "P2",                 "name": "Easier on Phone:",-                "id": "P2"+                "value": "5"             },             {-                "value": "5",+                "id": "P2",                 "name": "Easier on Tablet:",-                "id": "P2"+                "value": "5"             },             {-                "value": "5",+                "id": "P2",                 "name": "Device Preference:",-                "id": "P2"+                "value": "5"             },             {-                "value": "1",+                "id": "P2",                 "name": "Tablet_First",-                "id": "P2"+                "value": "1"             },             {-                "value": "1",+                "id": "P2",                 "name": "Toolbar_First",-                "id": "P2"+                "value": "1"             },             {-                "value": "P3",+                "id": "P3",                 "name": "Participant ID",-                "id": "P3"+                "value": "P3"             },             {-                "value": "2",+                "id": "P3",                 "name": "Identify Errors:",-                "id": "P3"+                "value": "2"             },             {-                "value": "2",+                "id": "P3",                 "name": "Fix Errors:",-                "id": "P3"+                "value": "2"             },             {-                "value": "2",+                "id": "P3",                 "name": "Easier to Fix:",-                "id": "P3"+                "value": "2"             },             {-                "value": "1",+                "id": "P3",                 "name": "Faster to Fix:",-                "id": "P3"+                "value": "1"             },             {-                "value": "2",+                "id": "P3",                 "name": "Easier on Phone:",-                "id": "P3"+                "value": "2"             },             {-                "value": "1",+                "id": "P3",                 "name": "Easier on Tablet:",-                "id": "P3"+                "value": "1"             },             {-                "value": "5",+                "id": "P3",                 "name": "Device Preference:",-                "id": "P3"+                "value": "5"             },             {-                "value": "1",+                "id": "P3",                 "name": "Tablet_First",-                "id": "P3"+                "value": "1"             },             {-                "value": "0",+                "id": "P3",                 "name": "Toolbar_First",-                "id": "P3"+                "value": "0"             },             {-                "value": "P4",+                "id": "P4",                 "name": "Participant ID",-                "id": "P4"+                "value": "P4"             },             {-                "value": "3",+                "id": "P4",                 "name": "Identify Errors:",-                "id": "P4"+                "value": "3"             },             {-                "value": "3",+                "id": "P4",                 "name": "Fix Errors:",-                "id": "P4"+                "value": "3"             },             {-                "value": "2",+                "id": "P4",                 "name": "Easier to Fix:",-                "id": "P4"+                "value": "2"             },             {-                "value": "2",+                "id": "P4",                 "name": "Faster to Fix:",-                "id": "P4"+                "value": "2"             },             {-                "value": "4",+                "id": "P4",                 "name": "Easier on Phone:",-                "id": "P4"+                "value": "4"             },             {-                "value": "1",+                "id": "P4",                 "name": "Easier on Tablet:",-                "id": "P4"+                "value": "1"             },             {-                "value": "5",+                "id": "P4",                 "name": "Device Preference:",-                "id": "P4"+                "value": "5"             },             {-                "value": "1",+                "id": "P4",                 "name": "Tablet_First",-                "id": "P4"+                "value": "1"             },             {-                "value": "0",+                "id": "P4",                 "name": "Toolbar_First",-                "id": "P4"+                "value": "0"             },             {-                "value": "P5",+                "id": "P5",                 "name": "Participant ID",-                "id": "P5"+                "value": "P5"             },             {-                "value": "2",+                "id": "P5",                 "name": "Identify Errors:",-                "id": "P5"+                "value": "2"             },             {-                "value": "2",+                "id": "P5",                 "name": "Fix Errors:",-                "id": "P5"+                "value": "2"             },             {-                "value": "4",+                "id": "P5",                 "name": "Easier to Fix:",-                "id": "P5"+                "value": "4"             },             {-                "value": "4",+                "id": "P5",                 "name": "Faster to Fix:",-                "id": "P5"+                "value": "4"             },             {-                "value": "4",+                "id": "P5",                 "name": "Easier on Phone:",-                "id": "P5"+                "value": "4"             },             {-                "value": "5",+                "id": "P5",                 "name": "Easier on Tablet:",-                "id": "P5"+                "value": "5"             },             {-                "value": "5",+                "id": "P5",                 "name": "Device Preference:",-                "id": "P5"+                "value": "5"             },             {-                "value": "0",+                "id": "P5",                 "name": "Tablet_First",-                "id": "P5"+                "value": "0"             },             {-                "value": "1",+                "id": "P5",                 "name": "Toolbar_First",-                "id": "P5"+                "value": "1"             },             {-                "value": "P6",+                "id": "P6",                 "name": "Participant ID",-                "id": "P6"+                "value": "P6"             },             {-                "value": "1",+                "id": "P6",                 "name": "Identify Errors:",-                "id": "P6"+                "value": "1"             },             {-                "value": "3",+                "id": "P6",                 "name": "Fix Errors:",-                "id": "P6"+                "value": "3"             },             {-                "value": "3",+                "id": "P6",                 "name": "Easier to Fix:",-                "id": "P6"+                "value": "3"             },             {-                "value": "4",+                "id": "P6",                 "name": "Faster to Fix:",-                "id": "P6"+                "value": "4"             },             {-                "value": "4",+                "id": "P6",                 "name": "Easier on Phone:",-                "id": "P6"+                "value": "4"             },             {-                "value": "4",+                "id": "P6",                 "name": "Easier on Tablet:",-                "id": "P6"+                "value": "4"             },             {-                "value": "4",+                "id": "P6",                 "name": "Device Preference:",-                "id": "P6"+                "value": "4"             },             {-                "value": "0",+                "id": "P6",                 "name": "Tablet_First",-                "id": "P6"+                "value": "0"             },             {-                "value": "1",+                "id": "P6",                 "name": "Toolbar_First",-                "id": "P6"+                "value": "1"             },             {-                "value": "P7",+                "id": "P7",                 "name": "Participant ID",-                "id": "P7"+                "value": "P7"             },             {-                "value": "2",+                "id": "P7",                 "name": "Identify Errors:",-                "id": "P7"+                "value": "2"             },             {-                "value": "3",+                "id": "P7",                 "name": "Fix Errors:",-                "id": "P7"+                "value": "3"             },             {-                "value": "4",+                "id": "P7",                 "name": "Easier to Fix:",-                "id": "P7"+                "value": "4"             },             {-                "value": "5",+                "id": "P7",                 "name": "Faster to Fix:",-                "id": "P7"+                "value": "5"             },             {-                "value": "3",+                "id": "P7",                 "name": "Easier on Phone:",-                "id": "P7"+                "value": "3"             },             {-                "value": "2",+                "id": "P7",                 "name": "Easier on Tablet:",-                "id": "P7"+                "value": "2"             },             {-                "value": "4",+                "id": "P7",                 "name": "Device Preference:",-                "id": "P7"+                "value": "4"             },             {-                "value": "0",+                "id": "P7",                 "name": "Tablet_First",-                "id": "P7"+                "value": "0"             },             {-                "value": "0",+                "id": "P7",                 "name": "Toolbar_First",-                "id": "P7"+                "value": "0"             },             {-                "value": "P8",+                "id": "P8",                 "name": "Participant ID",-                "id": "P8"+                "value": "P8"             },             {-                "value": "3",+                "id": "P8",                 "name": "Identify Errors:",-                "id": "P8"+                "value": "3"             },             {-                "value": "1",+                "id": "P8",                 "name": "Fix Errors:",-                "id": "P8"+                "value": "1"             },             {-                "value": "2",+                "id": "P8",                 "name": "Easier to Fix:",-                "id": "P8"+                "value": "2"             },             {-                "value": "4",+                "id": "P8",                 "name": "Faster to Fix:",-                "id": "P8"+                "value": "4"             },             {-                "value": "2",+                "id": "P8",                 "name": "Easier on Phone:",-                "id": "P8"+                "value": "2"             },             {-                "value": "5",+                "id": "P8",                 "name": "Easier on Tablet:",-                "id": "P8"+                "value": "5"             },             {-                "value": "5",+                "id": "P8",                 "name": "Device Preference:",-                "id": "P8"+                "value": "5"             },             {-                "value": "0",+                "id": "P8",                 "name": "Tablet_First",-                "id": "P8"+                "value": "0"             },             {-                "value": "0",+                "id": "P8",                 "name": "Toolbar_First",-                "id": "P8"+                "value": "0"             },             {-                "value": "P9",+                "id": "P9",                 "name": "Participant ID",-                "id": "P9"+                "value": "P9"             },             {-                "value": "2",+                "id": "P9",                 "name": "Identify Errors:",-                "id": "P9"+                "value": "2"             },             {-                "value": "3",+                "id": "P9",                 "name": "Fix Errors:",-                "id": "P9"+                "value": "3"             },             {-                "value": "2",+                "id": "P9",                 "name": "Easier to Fix:",-                "id": "P9"+                "value": "2"             },             {-                "value": "4",+                "id": "P9",                 "name": "Faster to Fix:",-                "id": "P9"+                "value": "4"             },             {-                "value": "1",+                "id": "P9",                 "name": "Easier on Phone:",-                "id": "P9"+                "value": "1"             },             {-                "value": "4",+                "id": "P9",                 "name": "Easier on Tablet:",-                "id": "P9"+                "value": "4"             },             {-                "value": "4",+                "id": "P9",                 "name": "Device Preference:",-                "id": "P9"+                "value": "4"             },             {-                "value": "1",+                "id": "P9",                 "name": "Tablet_First",-                "id": "P9"+                "value": "1"             },             {-                "value": "1",+                "id": "P9",                 "name": "Toolbar_First",-                "id": "P9"+                "value": "1"             },             {-                "value": "P10",+                "id": "P10",                 "name": "Participant ID",-                "id": "P10"+                "value": "P10"             },             {-                "value": "2",+                "id": "P10",                 "name": "Identify Errors:",-                "id": "P10"+                "value": "2"             },             {-                "value": "2",+                "id": "P10",                 "name": "Fix Errors:",-                "id": "P10"+                "value": "2"             },             {-                "value": "1",+                "id": "P10",                 "name": "Easier to Fix:",-                "id": "P10"+                "value": "1"             },             {-                "value": "1",+                "id": "P10",                 "name": "Faster to Fix:",-                "id": "P10"+                "value": "1"             },             {-                "value": "1",+                "id": "P10",                 "name": "Easier on Phone:",-                "id": "P10"+                "value": "1"             },             {-                "value": "1",+                "id": "P10",                 "name": "Easier on Tablet:",-                "id": "P10"+                "value": "1"             },             {-                "value": "5",+                "id": "P10",                 "name": "Device Preference:",-                "id": "P10"+                "value": "5"             },             {-                "value": "1",+                "id": "P10",                 "name": "Tablet_First",-                "id": "P10"+                "value": "1"             },             {-                "value": "1",+                "id": "P10",                 "name": "Toolbar_First",-                "id": "P10"+                "value": "1"             },             {-                "value": "P11",+                "id": "P11",                 "name": "Participant ID",-                "id": "P11"+                "value": "P11"             },             {-                "value": "2",+                "id": "P11",                 "name": "Identify Errors:",-                "id": "P11"+                "value": "2"             },             {-                "value": "2",+                "id": "P11",                 "name": "Fix Errors:",-                "id": "P11"+                "value": "2"             },             {-                "value": "1",+                "id": "P11",                 "name": "Easier to Fix:",-                "id": "P11"+                "value": "1"             },             {-                "value": "1",+                "id": "P11",                 "name": "Faster to Fix:",-                "id": "P11"+                "value": "1"             },             {-                "value": "1",+                "id": "P11",                 "name": "Easier on Phone:",-                "id": "P11"+                "value": "1"             },             {-                "value": "1",+                "id": "P11",                 "name": "Easier on Tablet:",-                "id": "P11"+                "value": "1"             },             {-                "value": "4",+                "id": "P11",                 "name": "Device Preference:",-                "id": "P11"+                "value": "4"             },             {-                "value": "1",+                "id": "P11",                 "name": "Tablet_First",-                "id": "P11"+                "value": "1"             },             {-                "value": "0",+                "id": "P11",                 "name": "Toolbar_First",-                "id": "P11"+                "value": "0"             },             {-                "value": "P12",+                "id": "P12",                 "name": "Participant ID",-                "id": "P12"+                "value": "P12"             },             {-                "value": "1",+                "id": "P12",                 "name": "Identify Errors:",-                "id": "P12"+                "value": "1"             },             {-                "value": "3",+                "id": "P12",                 "name": "Fix Errors:",-                "id": "P12"+                "value": "3"             },             {-                "value": "2",+                "id": "P12",                 "name": "Easier to Fix:",-                "id": "P12"+                "value": "2"             },             {-                "value": "3",+                "id": "P12",                 "name": "Faster to Fix:",-                "id": "P12"+                "value": "3"             },             {-                "value": "1",+                "id": "P12",                 "name": "Easier on Phone:",-                "id": "P12"+                "value": "1"             },             {-                "value": "3",+                "id": "P12",                 "name": "Easier on Tablet:",-                "id": "P12"+                "value": "3"             },             {-                "value": "3",+                "id": "P12",                 "name": "Device Preference:",-                "id": "P12"+                "value": "3"             },             {-                "value": "0",+                "id": "P12",                 "name": "Tablet_First",-                "id": "P12"+                "value": "0"             },             {-                "value": "1",+                "id": "P12",                 "name": "Toolbar_First",-                "id": "P12"+                "value": "1"             },             {-                "value": "P13",+                "id": "P13",                 "name": "Participant ID",-                "id": "P13"+                "value": "P13"             },             {-                "value": "2",+                "id": "P13",                 "name": "Identify Errors:",-                "id": "P13"+                "value": "2"             },             {-                "value": "2",+                "id": "P13",                 "name": "Fix Errors:",-                "id": "P13"+                "value": "2"             },             {-                "value": "1",+                "id": "P13",                 "name": "Easier to Fix:",-                "id": "P13"+                "value": "1"             },             {-                "value": "1",+                "id": "P13",                 "name": "Faster to Fix:",-                "id": "P13"+                "value": "1"             },             {-                "value": "1",+                "id": "P13",                 "name": "Easier on Phone:",-                "id": "P13"+                "value": "1"             },             {-                "value": "1",+                "id": "P13",                 "name": "Easier on Tablet:",-                "id": "P13"+                "value": "1"             },             {-                "value": "5",+                "id": "P13",                 "name": "Device Preference:",-                "id": "P13"+                "value": "5"             },             {-                "value": "0",+                "id": "P13",                 "name": "Tablet_First",-                "id": "P13"+                "value": "0"             },             {-                "value": "0",+                "id": "P13",                 "name": "Toolbar_First",-                "id": "P13"+                "value": "0"             },             {-                "value": "P14",+                "id": "P14",                 "name": "Participant ID",-                "id": "P14"+                "value": "P14"             },             {-                "value": "3",+                "id": "P14",                 "name": "Identify Errors:",-                "id": "P14"+                "value": "3"             },             {-                "value": "3",+                "id": "P14",                 "name": "Fix Errors:",-                "id": "P14"+                "value": "3"             },             {-                "value": "2",+                "id": "P14",                 "name": "Easier to Fix:",-                "id": "P14"+                "value": "2"             },             {-                "value": "2",+                "id": "P14",                 "name": "Faster to Fix:",-                "id": "P14"+                "value": "2"             },             {-                "value": "1",+                "id": "P14",                 "name": "Easier on Phone:",-                "id": "P14"+                "value": "1"             },             {-                "value": "1",+                "id": "P14",                 "name": "Easier on Tablet:",-                "id": "P14"+                "value": "1"             },             {-                "value": "1",+                "id": "P14",                 "name": "Device Preference:",-                "id": "P14"+                "value": "1"             },             {-                "value": "1",+                "id": "P14",                 "name": "Tablet_First",-                "id": "P14"+                "value": "1"             },             {-                "value": "1",+                "id": "P14",                 "name": "Toolbar_First",-                "id": "P14"+                "value": "1"             },             {-                "value": "P15",+                "id": "P15",                 "name": "Participant ID",-                "id": "P15"+                "value": "P15"             },             {-                "value": "4",+                "id": "P15",                 "name": "Identify Errors:",-                "id": "P15"+                "value": "4"             },             {-                "value": "5",+                "id": "P15",                 "name": "Fix Errors:",-                "id": "P15"+                "value": "5"             },             {-                "value": "1",+                "id": "P15",                 "name": "Easier to Fix:",-                "id": "P15"+                "value": "1"             },             {-                "value": "1",+                "id": "P15",                 "name": "Faster to Fix:",-                "id": "P15"+                "value": "1"             },             {-                "value": "1",+                "id": "P15",                 "name": "Easier on Phone:",-                "id": "P15"+                "value": "1"             },             {-                "value": "1",+                "id": "P15",                 "name": "Easier on Tablet:",-                "id": "P15"+                "value": "1"             },             {-                "value": "5",+                "id": "P15",                 "name": "Device Preference:",-                "id": "P15"+                "value": "5"             },             {-                "value": "1",+                "id": "P15",                 "name": "Tablet_First",-                "id": "P15"+                "value": "1"             },             {-                "value": "0",+                "id": "P15",                 "name": "Toolbar_First",-                "id": "P15"+                "value": "0"             },             {-                "value": "P16",+                "id": "P16",                 "name": "Participant ID",-                "id": "P16"+                "value": "P16"             },             {-                "value": "1",+                "id": "P16",                 "name": "Identify Errors:",-                "id": "P16"+                "value": "1"             },             {-                "value": "3",+                "id": "P16",                 "name": "Fix Errors:",-                "id": "P16"+                "value": "3"             },             {-                "value": "2",+                "id": "P16",                 "name": "Easier to Fix:",-                "id": "P16"+                "value": "2"             },             {-                "value": "2",+                "id": "P16",                 "name": "Faster to Fix:",-                "id": "P16"+                "value": "2"             },             {-                "value": "1",+                "id": "P16",                 "name": "Easier on Phone:",-                "id": "P16"+                "value": "1"             },             {-                "value": "4",+                "id": "P16",                 "name": "Easier on Tablet:",-                "id": "P16"+                "value": "4"             },             {-                "value": "5",+                "id": "P16",                 "name": "Device Preference:",-                "id": "P16"+                "value": "5"             },             {-                "value": "0",+                "id": "P16",                 "name": "Tablet_First",-                "id": "P16"+                "value": "0"             },             {-                "value": "1",+                "id": "P16",                 "name": "Toolbar_First",-                "id": "P16"+                "value": "1"             },             {-                "value": "P17",+                "id": "P17",                 "name": "Participant ID",-                "id": "P17"+                "value": "P17"             },             {-                "value": "3",+                "id": "P17",                 "name": "Identify Errors:",-                "id": "P17"+                "value": "3"             },             {-                "value": "2",+                "id": "P17",                 "name": "Fix Errors:",-                "id": "P17"+                "value": "2"             },             {-                "value": "2",+                "id": "P17",                 "name": "Easier to Fix:",-                "id": "P17"+                "value": "2"             },             {-                "value": "2",+                "id": "P17",                 "name": "Faster to Fix:",-                "id": "P17"+                "value": "2"             },             {-                "value": "1",+                "id": "P17",                 "name": "Easier on Phone:",-                "id": "P17"+                "value": "1"             },             {-                "value": "3",+                "id": "P17",                 "name": "Easier on Tablet:",-                "id": "P17"+                "value": "3"             },             {-                "value": "2",+                "id": "P17",                 "name": "Device Preference:",-                "id": "P17"+                "value": "2"             },             {-                "value": "0",+                "id": "P17",                 "name": "Tablet_First",-                "id": "P17"+                "value": "0"             },             {-                "value": "0",+                "id": "P17",                 "name": "Toolbar_First",-                "id": "P17"+                "value": "0"             }-        ],-        "medians": [-            {-                "median": 1.999976,-                "hi": "Hard",-                "name": "Identify Errors:",-                "lo": "Easy"+        ]+    },+    "encoding": {+        "y": {+            "axis": {+                "domain": false,+                "grid": true,+                "labelFontWeight": "bold",+                "offset": 50,+                "ticks": false,+                "title": null             },-            {-                "median": 2,-                "hi": "Hard",-                "name": "Fix Errors:",-                "lo": "Easy"+            "field": "name",+            "sort": null,+            "type": "nominal"+        }+    },+    "height": 175,+    "layer": [+        {+            "data": {+                "name": "values"             },-            {-                "median": 1.999969,-                "hi": "Gesture",-                "name": "Easier to Fix:",-                "lo": "Toolbar"+            "encoding": {+                "size": {+                    "aggregate": "count",+                    "legend": {+                        "offset": 75,+                        "title": "Number of Ratings"+                    },+                    "type": "quantitative"+                },+                "x": {+                    "axis": {+                        "grid": false,+                        "values": [+                            1,+                            2,+                            3,+                            4,+                            5+                        ]+                    },+                    "field": "value",+                    "scale": {+                        "domain": [+                            0,+                            6+                        ]+                    },+                    "type": "quantitative"+                }             },-            {-                "median": 2.500045,-                "hi": "Gesture",-                "name": "Faster to Fix:",-                "lo": "Toolbar"+            "mark": {+                "color": "#6eb4fd",+                "type": "circle"             },-            {-                "median": 1.500022,-                "hi": "Gesture",-                "name": "Easier on Phone:",-                "lo": "Toolbar"+            "transform": [+                {+                    "filter": "datum.name != 'Toolbar_First'"+                },+                {+                    "filter": "datum.name != 'Tablet_First'"+                },+                {+                    "filter": "datum.name != 'Participant ID'"+                }+            ]+        },+        {+            "encoding": {+                "x": {+                    "axis": {+                        "title": null+                    },+                    "field": "median",+                    "scale": {+                        "domain": [+                            0,+                            6+                        ]+                    },+                    "type": "quantitative"+                }             },-            {-                "median": 2.99998,-                "hi": "Gesture",-                "name": "Easier on Tablet:",-                "lo": "Toolbar"+            "mark": {+                "color": "black",+                "type": "tick"+            }+        },+        {+            "encoding": {+                "text": {+                    "field": "lo",+                    "type": "nominal"+                }             },-            {-                "median": 4.500007,-                "hi": "Tablet",-                "name": "Device Preference:",-                "lo": "Phone"+            "mark": {+                "align": "right",+                "type": "text",+                "x": -5             }-        ]-    }+        },+        {+            "encoding": {+                "text": {+                    "field": "hi",+                    "type": "nominal"+                }+            },+            "mark": {+                "align": "left",+                "type": "text",+                "x": 255+            }+        }+    ],+    "title": "Questionnaire Ratings",+    "width": 250 }
tests/specs/gallery/label/label9.vl view
@@ -1,68 +1,90 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {-            "arrow-label2": {-                "dy": 24,-                "fontSize": 9.5-            },             "arrow-label": {                 "dy": 12,                 "fontSize": 9.5+            },+            "arrow-label2": {+                "dy": 24,+                "fontSize": 9.5             }         },-        "view": {-            "stroke": null-        },         "title": {             "fontSize": 12+        },+        "view": {+            "stroke": null         }     },     "data": {         "values": [             {-                "mean": 1.81,                 "hi": 2.37,-                "study": "PoleStar vs Voyager",+                "lo": 1.26,+                "mean": 1.81,                 "measure": "Open Exploration",-                "lo": 1.26+                "study": "PoleStar vs Voyager"             },             {-                "mean": -1.69,                 "hi": -1.05,-                "study": "PoleStar vs Voyager",+                "lo": -2.33,+                "mean": -1.69,                 "measure": "Focused Question Answering",-                "lo": -2.33+                "study": "PoleStar vs Voyager"             },             {-                "mean": 2.19,                 "hi": 2.71,-                "study": "PoleStar vs Voyager 2",+                "lo": 1.67,+                "mean": 2.19,                 "measure": "Open Exploration",-                "lo": 1.67+                "study": "PoleStar vs Voyager 2"             },             {-                "mean": -6.0e-2,                 "hi": 0.35,-                "study": "PoleStar vs Voyager 2",+                "lo": -0.47,+                "mean": -6.0e-2,                 "measure": "Focused Question Answering",-                "lo": -0.47+                "study": "PoleStar vs Voyager 2"             }         ]     },+    "description": "Comparing Likert scale ratings between two conditions.",+    "spacing": 10,     "vconcat": [         {-            "title": {-                "text": "Mean of Subject Ratings (95% CIs)",-                "frame": "bounds"+            "encoding": {+                "y": {+                    "axis": {+                        "domain": false,+                        "grid": false,+                        "labelPadding": 5,+                        "ticks": false,+                        "title": null+                    },+                    "field": "study",+                    "type": "nominal"+                }             },             "layer": [                 {-                    "mark": "rule",                     "encoding": {-                        "x2": {-                            "field": "hi"-                        },                         "x": {+                            "axis": {+                                "gridColor": {+                                    "condition": {+                                        "test": "datum.value === 0",+                                        "value": "#666"+                                    },+                                    "value": "#ccc"+                                },+                                "gridDash": [+                                    3,+                                    3+                                ],+                                "title": null+                            },                             "field": "lo",                             "scale": {                                 "domain": [@@ -70,211 +92,189 @@                                     3                                 ]                             },-                            "type": "quantitative",-                            "axis": {-                                "gridDash": [-                                    3,-                                    3-                                ],-                                "gridColor": {-                                    "value": "#ccc",-                                    "condition": {-                                        "value": "#666",-                                        "test": "datum.value === 0"-                                    }-                                },-                                "title": null-                            }+                            "type": "quantitative"+                        },+                        "x2": {+                            "field": "hi"                         }-                    }+                    },+                    "mark": "rule"                 },                 {-                    "mark": {-                        "opacity": 1,-                        "stroke": "black",-                        "type": "circle"-                    },                     "encoding": {                         "color": {                             "field": "measure",+                            "legend": null,                             "scale": {                                 "range": [                                     "black",                                     "white"                                 ]                             },-                            "type": "nominal",-                            "legend": null+                            "type": "nominal"                         },                         "x": {                             "field": "mean",                             "type": "quantitative"                         }+                    },+                    "mark": {+                        "opacity": 1,+                        "stroke": "black",+                        "type": "circle"                     }                 }             ],-            "encoding": {-                "y": {-                    "field": "study",-                    "type": "nominal",-                    "axis": {-                        "domain": false,-                        "labelPadding": 5,-                        "grid": false,-                        "title": null,-                        "ticks": false-                    }-                }+            "title": {+                "frame": "bounds",+                "text": "Mean of Subject Ratings (95% CIs)"             }         },         {             "data": {                 "values": [                     {-                        "to": -2.9,                         "from": -0.25,-                        "label": "PoleStar"+                        "label": "PoleStar",+                        "to": -2.9                     },                     {-                        "to": 2.9,                         "from": 0.25,-                        "label": "Voyager / Voyager 2"+                        "label": "Voyager / Voyager 2",+                        "to": 2.9                     }                 ]             },             "layer": [                 {-                    "mark": "rule",                     "encoding": {-                        "x2": {-                            "field": "to"-                        },                         "x": {+                            "axis": null,                             "field": "from",                             "scale": {                                 "zero": false                             },-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"+                        },+                        "x2": {+                            "field": "to"                         }-                    }+                    },+                    "mark": "rule"                 },                 {-                    "mark": {-                        "size": 60,-                        "fill": "black",-                        "type": "point",-                        "filled": true-                    },                     "encoding": {                         "shape": {-                            "value": "triangle-left",                             "condition": {-                                "value": "triangle-right",-                                "test": "datum.to > 0"-                            }+                                "test": "datum.to > 0",+                                "value": "triangle-right"+                            },+                            "value": "triangle-left"                         },                         "x": {+                            "axis": null,                             "field": "to",-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"                         }+                    },+                    "mark": {+                        "fill": "black",+                        "filled": true,+                        "size": 60,+                        "type": "point"                     }                 },                 {-                    "transform": [-                        {-                            "filter": "datum.label === 'PoleStar'"-                        }-                    ],-                    "mark": {-                        "style": "arrow-label",-                        "align": "right",-                        "type": "text"-                    },                     "encoding": {                         "text": {                             "field": "label",                             "type": "nominal"                         },                         "x": {+                            "axis": null,                             "field": "from",-                            "type": "quantitative",-                            "axis": null-                        }-                    }-                },-                {-                    "transform": [-                        {-                            "filter": "datum.label !== 'PoleStar'"+                            "type": "quantitative"                         }-                    ],+                    },                     "mark": {+                        "align": "right",                         "style": "arrow-label",-                        "align": "left",                         "type": "text"                     },+                    "transform": [+                        {+                            "filter": "datum.label === 'PoleStar'"+                        }+                    ]+                },+                {                     "encoding": {                         "text": {                             "field": "label",                             "type": "nominal"                         },                         "x": {+                            "axis": null,                             "field": "from",-                            "type": "quantitative",-                            "axis": null-                        }-                    }-                },-                {-                    "transform": [-                        {-                            "filter": "datum.label === 'PoleStar'"+                            "type": "quantitative"                         }-                    ],+                    },                     "mark": {-                        "style": "arrow-label2",-                        "align": "right",+                        "align": "left",+                        "style": "arrow-label",                         "type": "text"                     },+                    "transform": [+                        {+                            "filter": "datum.label !== 'PoleStar'"+                        }+                    ]+                },+                {                     "encoding": {                         "text": {                             "value": "more valuable"                         },                         "x": {+                            "axis": null,                             "field": "from",-                            "type": "quantitative",-                            "axis": null-                        }-                    }-                },-                {-                    "transform": [-                        {-                            "filter": "datum.label !== 'PoleStar'"+                            "type": "quantitative"                         }-                    ],+                    },                     "mark": {+                        "align": "right",                         "style": "arrow-label2",-                        "align": "left",                         "type": "text"                     },+                    "transform": [+                        {+                            "filter": "datum.label === 'PoleStar'"+                        }+                    ]+                },+                {                     "encoding": {                         "text": {                             "value": "more valuable"                         },                         "x": {+                            "axis": null,                             "field": "from",-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"                         }-                    }+                    },+                    "mark": {+                        "align": "left",+                        "style": "arrow-label2",+                        "type": "text"+                    },+                    "transform": [+                        {+                            "filter": "datum.label !== 'PoleStar'"+                        }+                    ]                 }             ]         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Comparing Likert scale ratings between two conditions.",-    "spacing": 10+    ] }
tests/specs/gallery/label/voyager.vl view
@@ -1,68 +1,89 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "style": {-            "arrow-label2": {-                "dy": 24,-                "fontSize": 9.5-            },             "arrow-label": {                 "dy": 12,                 "fontSize": 9.5+            },+            "arrow-label2": {+                "dy": 24,+                "fontSize": 9.5             }         },-        "view": {-            "stroke": "transparent"-        },         "title": {             "fontSize": 12+        },+        "view": {+            "stroke": "transparent"         }     },     "data": {         "values": [             {-                "mean": 1.813,                 "hi": 2.37,-                "study": "PoleStar vs Voyager",+                "lo": 1.255,+                "mean": 1.813,                 "measure": "Open Exploration",-                "lo": 1.255+                "study": "PoleStar vs Voyager"             },             {-                "mean": -1.688,                 "hi": -1.05,-                "study": "PoleStar vs Voyager",+                "lo": -2.325,+                "mean": -1.688,                 "measure": "Focused Question Answering",-                "lo": -2.325+                "study": "PoleStar vs Voyager"             },             {-                "mean": 2.1875,                 "hi": 2.71,-                "study": "PoleStar vs Voyager 2",+                "lo": 1.665,+                "mean": 2.1875,                 "measure": "Open Exploration",-                "lo": 1.665+                "study": "PoleStar vs Voyager 2"             },             {-                "mean": -6.25e-2,                 "hi": 0.349,-                "study": "PoleStar vs Voyager 2",+                "lo": -0.474,+                "mean": -6.25e-2,                 "measure": "Focused Question Answering",-                "lo": -0.474+                "study": "PoleStar vs Voyager 2"             }         ]     },+    "spacing": 10,     "vconcat": [         {-            "title": {-                "text": "Mean of Subject Ratings (95% CIs)",-                "frame": "bounds"+            "encoding": {+                "y": {+                    "axis": {+                        "domain": false,+                        "grid": false,+                        "labelPadding": 5,+                        "ticks": false,+                        "title": null+                    },+                    "field": "study",+                    "type": "nominal"+                }             },             "layer": [                 {-                    "mark": "rule",                     "encoding": {-                        "x2": {-                            "field": "hi"-                        },                         "x": {+                            "axis": {+                                "gridColor": {+                                    "condition": {+                                        "test": "datum.value === 0",+                                        "value": "#666"+                                    },+                                    "value": "#CCC"+                                },+                                "gridDash": [+                                    3,+                                    3+                                ],+                                "title": ""+                            },                             "field": "lo",                             "scale": {                                 "domain": [@@ -70,166 +91,145 @@                                     3                                 ]                             },-                            "type": "quantitative",-                            "axis": {-                                "gridDash": [-                                    3,-                                    3-                                ],-                                "gridColor": {-                                    "value": "#CCC",-                                    "condition": {-                                        "value": "#666",-                                        "test": "datum.value === 0"-                                    }-                                },-                                "title": ""-                            }+                            "type": "quantitative"+                        },+                        "x2": {+                            "field": "hi"                         }-                    }+                    },+                    "mark": "rule"                 },                 {-                    "mark": {-                        "opacity": 1,-                        "stroke": "black",-                        "type": "circle"-                    },                     "encoding": {                         "color": {                             "field": "measure",+                            "legend": null,                             "scale": {                                 "range": [                                     "black",                                     "white"                                 ]                             },-                            "type": "nominal",-                            "legend": null+                            "type": "nominal"                         },                         "x": {                             "field": "mean",                             "type": "quantitative"                         }+                    },+                    "mark": {+                        "opacity": 1,+                        "stroke": "black",+                        "type": "circle"                     }                 }             ],-            "encoding": {-                "y": {-                    "field": "study",-                    "type": "nominal",-                    "axis": {-                        "domain": false,-                        "labelPadding": 5,-                        "grid": false,-                        "title": null,-                        "ticks": false-                    }-                }+            "title": {+                "frame": "bounds",+                "text": "Mean of Subject Ratings (95% CIs)"             }         },         {             "data": {                 "values": [                     {-                        "to": -2.9,                         "from": -0.25,-                        "label": "PoleStar"+                        "label": "PoleStar",+                        "to": -2.9                     },                     {-                        "to": 2.9,                         "from": 0.25,-                        "label": "Voyager / Voyager 2"+                        "label": "Voyager / Voyager 2",+                        "to": 2.9                     }                 ]             },             "layer": [                 {-                    "mark": "rule",                     "encoding": {-                        "x2": {-                            "field": "to"-                        },                         "x": {+                            "axis": null,                             "field": "from",                             "scale": {                                 "zero": false                             },-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"+                        },+                        "x2": {+                            "field": "to"                         }-                    }+                    },+                    "mark": "rule"                 },                 {-                    "mark": {-                        "size": 60,-                        "fill": "black",-                        "type": "point",-                        "filled": true-                    },                     "encoding": {                         "shape": {-                            "value": "triangle-left",                             "condition": {-                                "value": "triangle-right",-                                "test": "datum.to > 0"-                            }+                                "test": "datum.to > 0",+                                "value": "triangle-right"+                            },+                            "value": "triangle-left"                         },                         "x": {+                            "axis": null,                             "field": "to",-                            "type": "quantitative",-                            "axis": null+                            "type": "quantitative"                         }+                    },+                    "mark": {+                        "fill": "black",+                        "filled": true,+                        "size": 60,+                        "type": "point"                     }                 },                 {-                    "transform": [-                        {-                            "filter": "datum.label === 'PoleStar'"+                    "encoding": {+                        "x": {+                            "axis": null,+                            "field": "from",+                            "type": "quantitative"                         }-                    ],+                    },                     "mark": {+                        "align": "right",                         "style": "arrow-label",                         "text": [                             "Polestar",                             "More Valuable"                         ],-                        "align": "right",                         "type": "text"                     },-                    "encoding": {-                        "x": {-                            "field": "from",-                            "type": "quantitative",-                            "axis": null+                    "transform": [+                        {+                            "filter": "datum.label === 'PoleStar'"                         }-                    }+                    ]                 },                 {-                    "transform": [-                        {-                            "filter": "datum.label !== 'PoleStar'"+                    "encoding": {+                        "x": {+                            "axis": null,+                            "field": "from",+                            "type": "quantitative"                         }-                    ],+                    },                     "mark": {+                        "align": "left",                         "style": "arrow-label",                         "text": [                             "Voyager / Voyager 2",                             "More Valuable"                         ],-                        "align": "left",                         "type": "text"                     },-                    "encoding": {-                        "x": {-                            "field": "from",-                            "type": "quantitative",-                            "axis": null+                    "transform": [+                        {+                            "filter": "datum.label !== 'PoleStar'"                         }-                    }+                    ]                 }             ]         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "spacing": 10+    ] }
tests/specs/gallery/layer/layer1.vl view
@@ -1,254 +1,244 @@ {-    "transform": [-        {-            "as": "isIncrease",-            "calculate": "datum.open > datum.close"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "low": 28.45,-                "ret": -4.89396411092985,                 "close": 30.04,                 "date": "01-Jun-2009",-                "open": 28.7,                 "high": 30.05,+                "low": 28.45,+                "open": 28.7,+                "ret": -4.89396411092985,                 "signal": "short"             },             {-                "low": 28.3,-                "ret": -0.322580645161295,                 "close": 29.63,                 "date": "02-Jun-2009",-                "open": 30.04,                 "high": 30.13,+                "low": 28.3,+                "open": 30.04,+                "ret": -0.322580645161295,                 "signal": "short"             },             {-                "low": 29.62,-                "ret": 3.68663594470045,                 "close": 31.02,                 "date": "03-Jun-2009",-                "open": 29.62,                 "high": 31.79,+                "low": 29.62,+                "open": 29.62,+                "ret": 3.68663594470045,                 "signal": "short"             },             {-                "low": 29.92,-                "ret": 4.51010886469673,                 "close": 30.18,                 "date": "04-Jun-2009",-                "open": 31.02,                 "high": 31.02,+                "low": 29.92,+                "open": 31.02,+                "ret": 4.51010886469673,                 "signal": "short"             },             {-                "low": 28.85,-                "ret": 6.08424336973478,                 "close": 29.62,                 "date": "05-Jun-2009",-                "open": 29.39,                 "high": 30.81,+                "low": 28.85,+                "open": 29.39,+                "ret": 6.08424336973478,                 "signal": "short"             },             {-                "low": 26.41,-                "ret": 1.2539184952978,                 "close": 29.77,                 "date": "08-Jun-2009",-                "open": 30.84,                 "high": 31.82,+                "low": 26.41,+                "open": 30.84,+                "ret": 1.2539184952978,                 "signal": "short"             },             {-                "low": 27.79,-                "ret": -5.02431118314424,                 "close": 28.27,                 "date": "09-Jun-2009",-                "open": 29.77,                 "high": 29.77,+                "low": 27.79,+                "open": 29.77,+                "ret": -5.02431118314424,                 "signal": "short"             },             {-                "low": 26.9,-                "ret": -5.46623794212217,                 "close": 28.46,                 "date": "10-Jun-2009",-                "open": 26.9,                 "high": 29.74,+                "low": 26.9,+                "open": 26.9,+                "ret": -5.46623794212217,                 "signal": "short"             },             {-                "low": 26.81,-                "ret": -8.3743842364532,                 "close": 28.11,                 "date": "11-Jun-2009",-                "open": 27.36,                 "high": 28.11,+                "low": 26.81,+                "open": 27.36,+                "ret": -8.3743842364532,                 "signal": "short"             },             {-                "low": 27.73,-                "ret": -5.52763819095477,                 "close": 28.15,                 "date": "12-Jun-2009",-                "open": 28.08,                 "high": 28.5,+                "low": 27.73,+                "open": 28.08,+                "ret": -5.52763819095477,                 "signal": "short"             },             {-                "low": 29.64,-                "ret": 3.4920634920635,                 "close": 30.81,                 "date": "15-Jun-2009",-                "open": 29.7,                 "high": 31.09,+                "low": 29.64,+                "open": 29.7,+                "ret": 3.4920634920635,                 "signal": "long"             },             {-                "low": 30.07,-                "ret": 0.155038759689914,                 "close": 32.68,                 "date": "16-Jun-2009",-                "open": 30.81,                 "high": 32.75,+                "low": 30.07,+                "open": 30.81,+                "ret": 0.155038759689914,                 "signal": "short"             },             {-                "low": 30.64,-                "ret": 5.82822085889571,                 "close": 31.54,                 "date": "17-Jun-2009",-                "open": 31.19,                 "high": 32.77,+                "low": 30.64,+                "open": 31.19,+                "ret": 5.82822085889571,                 "signal": "short"             },             {-                "low": 29.6,-                "ret": 8.17610062893082,                 "close": 30.03,                 "date": "18-Jun-2009",-                "open": 31.54,                 "high": 31.54,+                "low": 29.6,+                "open": 31.54,+                "ret": 8.17610062893082,                 "signal": "short"             },             {-                "low": 27.56,-                "ret": 8.59872611464968,                 "close": 27.99,                 "date": "19-Jun-2009",-                "open": 29.16,                 "high": 29.32,+                "low": 27.56,+                "open": 29.16,+                "ret": 8.59872611464968,                 "signal": "short"             },             {-                "low": 30.3,-                "ret": 15.4907975460123,                 "close": 31.17,                 "date": "22-Jun-2009",-                "open": 30.4,                 "high": 32.05,+                "low": 30.3,+                "open": 30.4,+                "ret": 15.4907975460123,                 "signal": "short"             },             {-                "low": 27.83,-                "ret": 11.7370892018779,                 "close": 30.58,                 "date": "23-Jun-2009",-                "open": 31.3,                 "high": 31.54,+                "low": 27.83,+                "open": 31.3,+                "ret": 11.7370892018779,                 "signal": "short"             },             {-                "low": 28.79,-                "ret": -10.4234527687296,                 "close": 29.05,                 "date": "24-Jun-2009",-                "open": 30.58,                 "high": 30.58,+                "low": 28.79,+                "open": 30.58,+                "ret": -10.4234527687296,                 "signal": "long"             },             {-                "low": 26.3,-                "ret": 0,                 "close": 26.36,                 "date": "25-Jun-2009",-                "open": 29.45,                 "high": 29.56,+                "low": 26.3,+                "open": 29.45,+                "ret": 0,                 "signal": "long"             },             {-                "low": 25.76,-                "ret": 0,                 "close": 25.93,                 "date": "26-Jun-2009",-                "open": 27.09,                 "high": 27.22,+                "low": 25.76,+                "open": 27.09,+                "ret": 0,                 "signal": "long"             },             {-                "low": 25.29,-                "ret": 5.26315789473684,                 "close": 25.35,                 "date": "29-Jun-2009",-                "open": 25.93,                 "high": 27.18,+                "low": 25.29,+                "open": 25.93,+                "ret": 5.26315789473684,                 "signal": "long"             },             {-                "low": 25.02,-                "ret": 6.73758865248228,                 "close": 26.35,                 "date": "30-Jun-2009",-                "open": 25.36,                 "high": 27.38,+                "low": 25.02,+                "open": 25.36,+                "ret": 6.73758865248228,                 "signal": "long"             }         ]     },-    "width": 320,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A candlestick chart inspired by Protovis (http://mbostock.github.io/protovis/ex/candlestick.html)",     "layer": [         {-            "mark": "rule",             "encoding": {                 "color": {                     "field": "isIncrease",+                    "legend": null,                     "scale": {                         "range": [                             "#ae1325",                             "#06982d"                         ]                     },-                    "type": "nominal",-                    "legend": null+                    "type": "nominal"                 },                 "x": {+                    "axis": {+                        "format": "%m/%d",+                        "title": "Date in 2009"+                    },                     "field": "date",                     "scale": {                         "domain": [                             {                                 "date": 31,-                                "year": 2009,-                                "month": "May"+                                "month": "May",+                                "year": 2009                             },                             {                                 "date": 1,-                                "year": 2009,-                                "month": "Jul"+                                "month": "Jul",+                                "year": 2009                             }                         ]                     },                     "timeUnit": "yearmonthdate",-                    "type": "temporal",-                    "axis": {-                        "format": "%m/%d",-                        "title": "Date in 2009"-                    }-                },-                "y2": {-                    "field": "high"+                    "type": "temporal"                 },                 "y": {                     "field": "low",@@ -256,16 +246,19 @@                         "zero": false                     },                     "type": "quantitative"+                },+                "y2": {+                    "field": "high"                 }-            }+            },+            "mark": "rule"         },         {-            "mark": "bar",             "encoding": {                 "color": {                     "field": "isIncrease",-                    "type": "nominal",-                    "legend": null+                    "legend": null,+                    "type": "nominal"                 },                 "size": {                     "value": 5@@ -275,15 +268,22 @@                     "timeUnit": "yearmonthdate",                     "type": "temporal"                 },-                "y2": {-                    "field": "close"-                },                 "y": {                     "field": "open",                     "type": "quantitative"+                },+                "y2": {+                    "field": "close"                 }-            }+            },+            "mark": "bar"         }     ],-    "description": "A candlestick chart inspired by Protovis (http://mbostock.github.io/protovis/ex/candlestick.html)"+    "transform": [+        {+            "as": "isIncrease",+            "calculate": "datum.open > datum.close"+        }+    ],+    "width": 320 }
tests/specs/gallery/layer/layer2.vl view
@@ -1,56 +1,46 @@ {-    "transform": [-        {-            "filter": {-                "field": "country",-                "oneOf": [-                    "China",-                    "India",-                    "United States",-                    "Indonesia",-                    "Brazil"-                ]-            }-        },-        {-            "filter": {-                "field": "year",-                "oneOf": [-                    1955,-                    2000-                ]-            }-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/countries.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A ranged dot plot that uses 'layer' to convey changing life expectancy for the five most populous countries (between 1955 and 2000).",+    "encoding": {+        "y": {+            "axis": {+                "domain": false,+                "minExtent": 70,+                "offset": 5,+                "ticks": false,+                "title": "Country"+            },+            "field": "country",+            "type": "nominal"+        }+    },     "layer": [         {-            "mark": "line",             "encoding": {                 "color": {                     "value": "#db646f"                 },-                "x": {-                    "field": "life_expect",-                    "type": "quantitative"-                },                 "detail": {                     "field": "country",                     "type": "nominal"+                },+                "x": {+                    "field": "life_expect",+                    "type": "quantitative"                 }-            }+            },+            "mark": "line"         },         {-            "mark": {-                "type": "point",-                "filled": true-            },             "encoding": {                 "color": {                     "field": "year",+                    "legend": {+                        "title": "Year"+                    },                     "scale": {                         "domain": [                             1955,@@ -61,39 +51,49 @@                             "#911a24"                         ]                     },-                    "type": "ordinal",-                    "legend": {-                        "title": "Year"-                    }-                },-                "size": {-                    "value": 100+                    "type": "ordinal"                 },                 "opacity": {                     "value": 1                 },+                "size": {+                    "value": 100+                },                 "x": {-                    "field": "life_expect",-                    "type": "quantitative",                     "axis": {                         "title": "Life Expectancy (years)"-                    }+                    },+                    "field": "life_expect",+                    "type": "quantitative"                 }+            },+            "mark": {+                "filled": true,+                "type": "point"             }         }     ],-    "encoding": {-        "y": {-            "field": "country",-            "type": "nominal",-            "axis": {-                "minExtent": 70,-                "offset": 5,-                "domain": false,-                "title": "Country",-                "ticks": false+    "transform": [+        {+            "filter": {+                "field": "country",+                "oneOf": [+                    "China",+                    "India",+                    "United States",+                    "Indonesia",+                    "Brazil"+                ]             }+        },+        {+            "filter": {+                "field": "year",+                "oneOf": [+                    1955,+                    2000+                ]+            }         }-    },-    "description": "A ranged dot plot that uses 'layer' to convey changing life expectancy for the five most populous countries (between 1955 and 2000)."+    ] }
tests/specs/gallery/layer/layer3.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "tick": {             "thickness": 2@@ -7,13 +8,13 @@     "data": {         "values": [             {+                "markers": [+                    250+                ],                 "measures": [                     220,                     270                 ],-                "markers": [-                    250-                ],                 "ranges": [                     150,                     225,@@ -22,13 +23,13 @@                 "title": "Revenue"             },             {+                "markers": [+                    26+                ],                 "measures": [                     21,                     23                 ],-                "markers": [-                    26-                ],                 "ranges": [                     20,                     25,@@ -37,13 +38,13 @@                 "title": "Profit"             },             {+                "markers": [+                    550+                ],                 "measures": [                     100,                     320                 ],-                "markers": [-                    550-                ],                 "ranges": [                     350,                     500,@@ -52,13 +53,13 @@                 "title": "Order size"             },             {+                "markers": [+                    2100+                ],                 "measures": [                     1000,                     1650                 ],-                "markers": [-                    2100-                ],                 "ranges": [                     1400,                     2000,@@ -67,13 +68,13 @@                 "title": "New customers"             },             {+                "markers": [+                    4.4+                ],                 "measures": [                     3.2,                     4.7                 ],-                "markers": [-                    4.4-                ],                 "ranges": [                     3.5,                     4.25,@@ -83,6 +84,17 @@             }         ]     },+    "description": "Bullet chart",+    "facet": {+        "row": {+            "field": "title",+            "header": {+                "labelAngle": 30,+                "title": null+            },+            "type": "ordinal"+        }+    },     "resolve": {         "scale": {             "x": "independent"@@ -91,97 +103,85 @@     "spec": {         "layer": [             {-                "mark": {-                    "color": "#eee",-                    "type": "bar"-                },                 "encoding": {                     "x": {+                        "axis": {+                            "title": null+                        },                         "field": "ranges[2]",                         "scale": {                             "nice": false                         },-                        "type": "quantitative",-                        "axis": {-                            "title": null-                        }+                        "type": "quantitative"                     }+                },+                "mark": {+                    "color": "#eee",+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "#ddd",-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "ranges[1]",                         "type": "quantitative"                     }+                },+                "mark": {+                    "color": "#ddd",+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "#ccc",-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "ranges[0]",                         "type": "quantitative"                     }+                },+                "mark": {+                    "color": "#ccc",+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "lightsteelblue",-                    "size": 10,-                    "type": "bar"-                },                 "encoding": {                     "x": {                         "field": "measures[1]",                         "type": "quantitative"                     }-                }-            },-            {+                },                 "mark": {-                    "color": "steelblue",+                    "color": "lightsteelblue",                     "size": 10,                     "type": "bar"-                },+                }+            },+            {                 "encoding": {                     "x": {                         "field": "measures[0]",                         "type": "quantitative"                     }+                },+                "mark": {+                    "color": "steelblue",+                    "size": 10,+                    "type": "bar"                 }             },             {-                "mark": {-                    "color": "black",-                    "type": "tick"-                },                 "encoding": {                     "x": {                         "field": "markers[0]",                         "type": "quantitative"                     }+                },+                "mark": {+                    "color": "black",+                    "type": "tick"                 }             }         ]-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "facet": {-        "row": {-            "field": "title",-            "header": {-                "labelAngle": 30,-                "title": null-            },-            "type": "ordinal"-        }-    },-    "description": "Bullet chart"+    } }
tests/specs/gallery/layer/layer4.vl view
@@ -1,53 +1,53 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "resolve": {-        "scale": {-            "y": "independent"+    "description": "Layered bar/line chart with dual axes",+    "encoding": {+        "x": {+            "field": "date",+            "timeUnit": "month",+            "type": "ordinal"         }     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": "bar",             "encoding": {                 "y": {-                    "field": "precipitation",                     "aggregate": "mean",-                    "type": "quantitative",                     "axis": {                         "grid": false-                    }+                    },+                    "field": "precipitation",+                    "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": "line",             "encoding": {                 "color": {                     "value": "firebrick"                 },                 "y": {+                    "aggregate": "mean",+                    "axis": {+                        "grid": false+                    },                     "field": "temp_max",                     "scale": {                         "zero": false                     },-                    "aggregate": "mean",-                    "type": "quantitative",-                    "axis": {-                        "grid": false-                    }+                    "type": "quantitative"                 }-            }+            },+            "mark": "line"         }     ],-    "encoding": {-        "x": {-            "field": "date",-            "timeUnit": "month",-            "type": "ordinal"+    "resolve": {+        "scale": {+            "y": "independent"         }-    },-    "description": "Layered bar/line chart with dual axes"+    } }
tests/specs/gallery/layer/layer5.vl view
@@ -1,9 +1,9 @@ {-    "height": 50,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "area": {-            "orient": "vertical",-            "interpolate": "monotone"+            "interpolate": "monotone",+            "orient": "vertical"         }     },     "data": {@@ -90,14 +90,20 @@             }         ]     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Horizon chart with 2 layers. (See https://idl.cs.washington.edu/papers/horizon/ for more details on horizon charts.)",+    "encoding": {+        "x": {+            "field": "x",+            "scale": {+                "nice": false,+                "zero": false+            },+            "type": "quantitative"+        }+    },+    "height": 50,     "layer": [         {-            "mark": {-                "type": "area",-                "clip": true-            },             "encoding": {                 "opacity": {                     "value": 0.6@@ -112,24 +118,21 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "clip": true,+                "type": "area"             }         },         {-            "transform": [-                {-                    "as": "ny",-                    "calculate": "datum.y - 50"-                }-            ],-            "mark": {-                "type": "area",-                "clip": true-            },             "encoding": {                 "opacity": {                     "value": 0.3                 },                 "y": {+                    "axis": {+                        "title": "y"+                    },                     "field": "ny",                     "scale": {                         "domain": [@@ -137,23 +140,20 @@                             50                         ]                     },-                    "type": "quantitative",-                    "axis": {-                        "title": "y"-                    }+                    "type": "quantitative"                 }-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "x",-            "scale": {-                "zero": false,-                "nice": false             },-            "type": "quantitative"+            "mark": {+                "clip": true,+                "type": "area"+            },+            "transform": [+                {+                    "as": "ny",+                    "calculate": "datum.y - 50"+                }+            ]         }-    },-    "description": "Horizon chart with 2 layers. (See https://idl.cs.washington.edu/papers/horizon/ for more details on horizon charts.)"+    ],+    "width": 300 }
tests/specs/gallery/layer/layer6.vl view
@@ -1,23 +1,26 @@ {-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/weather.json"     },-    "width": 250,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": {-        "text": [-            "Weekly Weather",-            "Observations and Predictions"-        ],-        "frame": "group"+    "description": "A layered bar chart with floating bars representing weekly weather data",+    "encoding": {+        "x": {+            "axis": {+                "domain": false,+                "labels": false,+                "orient": "top",+                "ticks": false,+                "title": null,+                "titlePadding": 25+            },+            "field": "id",+            "type": "ordinal"+        }     },+    "height": 200,     "layer": [         {-            "mark": {-                "style": "box",-                "type": "bar"-            },             "encoding": {                 "color": {                     "value": "#ccc"@@ -25,10 +28,10 @@                 "size": {                     "value": 20                 },-                "y2": {-                    "field": "record.high"-                },                 "y": {+                    "axis": {+                        "title": "Temperature (F)"+                    },                     "field": "record.low",                     "scale": {                         "domain": [@@ -36,18 +39,18 @@                             70                         ]                     },-                    "type": "quantitative",-                    "axis": {-                        "title": "Temperature (F)"-                    }+                    "type": "quantitative"+                },+                "y2": {+                    "field": "record.high"                 }-            }-        },-        {+            },             "mark": {                 "style": "box",                 "type": "bar"-            },+            }+        },+        {             "encoding": {                 "color": {                     "value": "#999"@@ -55,20 +58,20 @@                 "size": {                     "value": 20                 },-                "y2": {-                    "field": "normal.high"-                },                 "y": {                     "field": "normal.low",                     "type": "quantitative"+                },+                "y2": {+                    "field": "normal.high"                 }-            }-        },-        {+            },             "mark": {                 "style": "box",                 "type": "bar"-            },+            }+        },+        {             "encoding": {                 "color": {                     "value": "#000"@@ -76,20 +79,20 @@                 "size": {                     "value": 12                 },-                "y2": {-                    "field": "actual.high"-                },                 "y": {                     "field": "actual.low",                     "type": "quantitative"+                },+                "y2": {+                    "field": "actual.high"                 }-            }-        },-        {+            },             "mark": {                 "style": "box",                 "type": "bar"-            },+            }+        },+        {             "encoding": {                 "color": {                     "value": "#000"@@ -97,20 +100,20 @@                 "size": {                     "value": 12                 },-                "y2": {-                    "field": "forecast.low.high"-                },                 "y": {                     "field": "forecast.low.low",                     "type": "quantitative"+                },+                "y2": {+                    "field": "forecast.low.high"                 }-            }-        },-        {+            },             "mark": {                 "style": "box",                 "type": "bar"-            },+            }+        },+        {             "encoding": {                 "color": {                     "value": "#000"@@ -118,20 +121,20 @@                 "size": {                     "value": 3                 },-                "y2": {-                    "field": "forecast.high.low"-                },                 "y": {                     "field": "forecast.low.high",                     "type": "quantitative"+                },+                "y2": {+                    "field": "forecast.high.low"                 }-            }-        },-        {+            },             "mark": {                 "style": "box",                 "type": "bar"-            },+            }+        },+        {             "encoding": {                 "color": {                     "value": "#000"@@ -139,43 +142,40 @@                 "size": {                     "value": 12                 },-                "y2": {-                    "field": "forecast.high.high"-                },                 "y": {                     "field": "forecast.high.low",                     "type": "quantitative"+                },+                "y2": {+                    "field": "forecast.high.high"                 }+            },+            "mark": {+                "style": "box",+                "type": "bar"             }         },         {-            "mark": {-                "align": "center",-                "type": "text",-                "baseline": "bottom",-                "y": -5-            },             "encoding": {                 "text": {                     "field": "day",                     "type": "nominal"                 }+            },+            "mark": {+                "align": "center",+                "baseline": "bottom",+                "type": "text",+                "y": -5             }         }     ],-    "encoding": {-        "x": {-            "field": "id",-            "type": "ordinal",-            "axis": {-                "domain": false,-                "orient": "top",-                "titlePadding": 25,-                "labels": false,-                "title": null,-                "ticks": false-            }-        }+    "title": {+        "frame": "group",+        "text": [+            "Weekly Weather",+            "Observations and Predictions"+        ]     },-    "description": "A layered bar chart with floating bars representing weekly weather data"+    "width": 250 }
tests/specs/gallery/layer/layer7.vl view
@@ -1,55 +1,35 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "mean",-                    "as": "rolling_mean",-                    "field": "temp_max"-                }-            ],-            "frame": [-                -15,-                15-            ]-        }-    ],-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Plot showing a 30 day rolling average with raw values in the background.",+    "height": 300,     "layer": [         {-            "mark": {-                "opacity": 0.3,-                "type": "point"-            },             "encoding": {                 "x": {-                    "field": "date",-                    "title": "Date",-                    "type": "temporal",                     "axis": {-                        "zindex": 1,                         "gridColor": "orange",-                        "gridOpacity": 0.8-                    }+                        "gridOpacity": 0.8,+                        "zindex": 1+                    },+                    "field": "date",+                    "title": "Date",+                    "type": "temporal"                 },                 "y": {                     "field": "temp_max",                     "title": "Max Temperature",                     "type": "quantitative"                 }+            },+            "mark": {+                "opacity": 0.3,+                "type": "point"             }         },         {-            "mark": {-                "color": "red",-                "size": 3,-                "type": "line"-            },             "encoding": {                 "x": {                     "field": "date",@@ -59,8 +39,28 @@                     "field": "rolling_mean",                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "size": 3,+                "type": "line"             }         }     ],-    "description": "Plot showing a 30 day rolling average with raw values in the background."+    "transform": [+        {+            "frame": [+                -15,+                15+            ],+            "window": [+                {+                    "as": "rolling_mean",+                    "field": "temp_max",+                    "op": "mean"+                }+            ]+        }+    ],+    "width": 400 }
tests/specs/gallery/layer/layer_bar_fruit.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -35,59 +36,58 @@             }         ]     },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Vega-Lite version of bar chart from https://observablehq.com/@d3/learn-d3-scales.",+    "encoding": {+        "x": {+            "field": "count",+            "title": null,+            "type": "quantitative"+        },+        "y": {+            "field": "name",+            "sort": {+                "encoding": "x",+                "order": "descending"+            },+            "title": null,+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": "bar",             "encoding": {                 "color": {                     "field": "count",                     "title": "Number of fruit",                     "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": {-                "aria": false,-                "align": "right",-                "xOffset": -4,-                "type": "text"-            },             "encoding": {                 "color": {-                    "value": "black",                     "condition": {-                        "value": "white",                         "test": {                             "field": "count",                             "gt": 10-                        }-                    }+                        },+                        "value": "white"+                    },+                    "value": "black"                 },                 "text": {                     "field": "count",                     "type": "quantitative"                 }+            },+            "mark": {+                "align": "right",+                "aria": false,+                "type": "text",+                "xOffset": -4             }         }     ],-    "encoding": {-        "x": {-            "field": "count",-            "title": null,-            "type": "quantitative"-        },-        "y": {-            "field": "name",-            "sort": {-                "encoding": "x",-                "order": "descending"-            },-            "title": null,-            "type": "ordinal"-        }-    },-    "description": "Vega-Lite version of bar chart from https://observablehq.com/@d3/learn-d3-scales."+    "width": 400 }
tests/specs/gallery/layer/layertimeunitrect.vl view
@@ -1,55 +1,55 @@ {     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Drawing rect bin from the beginning of May to end of July",     "layer": [         {-            "mark": "bar",             "data": {                 "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"             },             "encoding": {                 "x": {+                    "axis": {+                        "labelAlign": "left",+                        "labelExpr": "datum.label[0]"+                    },                     "field": "date",                     "timeUnit": "month",                     "title": "month",-                    "type": "temporal",-                    "axis": {-                        "labelExpr": "datum.label[0]",-                        "labelAlign": "left"-                    }+                    "type": "temporal"                 },                 "y": {-                    "field": "precipitation",                     "aggregate": "mean",+                    "field": "precipitation",                     "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": {-                "color": "grey",-                "opacity": 0.5,-                "type": "rect"-            },             "data": {                 "values": [                     {-                        "date_end": "July 15, 2010",-                        "date": "May 1, 2010"+                        "date": "May 1, 2010",+                        "date_end": "July 15, 2010"                     }                 ]             },             "encoding": {-                "x2": {-                    "field": "date_end",-                    "timeUnit": "month"-                },                 "x": {                     "field": "date",                     "timeUnit": "month",                     "type": "temporal"+                },+                "x2": {+                    "field": "date_end",+                    "timeUnit": "month"                 }+            },+            "mark": {+                "color": "grey",+                "opacity": 0.5,+                "type": "rect"             }         }-    ],-    "description": "Drawing rect bin from the beginning of May to end of July"+    ] }
tests/specs/gallery/line/conditionalaxis.vl view
@@ -1,76 +1,76 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        },-        {-            "filter": {-                "field": "date",-                "timeUnit": "year",-                "range": [-                    2006,-                    2007-                ]-            }-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "axis": {             "domainColor": "#ddd",             "tickColor": "#ddd"         }     },-    "mark": "line",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Line chart with conditional axis ticks, labels, and grid.",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {-                "tickSize": 30,-                "labelOffset": 4,-                "tickDash": {-                    "value": [-                        2,-                        2-                    ],+                "gridDash": {                     "condition": {-                        "value": [],                         "test": {                             "equal": 1,                             "field": "value",                             "timeUnit": "month"-                        }-                    }-                },-                "tickCount": 8,-                "gridDash": {+                        },+                        "value": []+                    },                     "value": [                         2,                         2-                    ],+                    ]+                },+                "labelAlign": "left",+                "labelExpr": "[timeFormat(datum.value, '%b'), timeFormat(datum.value, '%m') == '01' ? timeFormat(datum.value, '%Y') : '']",+                "labelOffset": 4,+                "labelPadding": -24,+                "tickCount": 8,+                "tickDash": {                     "condition": {-                        "value": [],                         "test": {                             "equal": 1,                             "field": "value",                             "timeUnit": "month"-                        }-                    }+                        },+                        "value": []+                    },+                    "value": [+                        2,+                        2+                    ]                 },-                "labelExpr": "[timeFormat(datum.value, '%b'), timeFormat(datum.value, '%m') == '01' ? timeFormat(datum.value, '%Y') : '']",-                "labelPadding": -24,-                "labelAlign": "left"-            }+                "tickSize": 30+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Line chart with conditional axis ticks, labels, and grid."+    "mark": "line",+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        },+        {+            "filter": {+                "field": "date",+                "range": [+                    2006,+                    2007+                ],+                "timeUnit": "year"+            }+        }+    ],+    "width": 400 }
tests/specs/gallery/line/line1.vl view
@@ -1,26 +1,26 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        }-    ],-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Google's stock price over time.",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Google's stock price over time."+    "mark": "line",+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        }+    ] }
tests/specs/gallery/line/line10.vl view
@@ -1,64 +1,90 @@ {-    "transform": [-        {-            "as": "year",-            "calculate": "year(datum.Date)"-        },-        {-            "as": "month",-            "calculate": "month(datum.Date)"-        },-        {-            "as": "decade",-            "calculate": "floor(datum.year / 10)"-        },-        {-            "as": "scaled_date",-            "calculate": "(datum.year % 10) + (datum.month / 12)"-        }-    ],-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },     "data": {-        "url": "https://vega.github.io/vega-lite/data/co2-concentration.csv",         "format": {             "parse": {                 "Date": "utc:'%Y-%m-%d'"             }+        },+        "url": "https://vega.github.io/vega-lite/data/co2-concentration.csv"+    },+    "description": "Carbon dioxide in the atmosphere.",+    "encoding": {+        "x": {+            "axis": {+                "tickCount": 10,+                "title": "Year into decade",+                "values": [+                    1,+                    2,+                    3,+                    4,+                    5,+                    6,+                    7,+                    8,+                    9+                ]+            },+            "field": "scaled_date",+            "type": "quantitative"+        },+        "y": {+            "axis": {+                "title": "CO2 concentration in ppm"+            },+            "field": "CO2",+            "scale": {+                "zero": false+            },+            "type": "quantitative"         }     },-    "width": 800,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "height": 500,     "layer": [         {-            "mark": {-                "orient": "vertical",-                "type": "line"-            },             "encoding": {                 "color": {                     "field": "decade",-                    "type": "nominal",-                    "legend": null+                    "legend": null,+                    "type": "nominal"                 }+            },+            "mark": {+                "orient": "vertical",+                "type": "line"             }         },         {+            "encoding": {+                "text": {+                    "field": "aggregated.year",+                    "type": "nominal"+                }+            },+            "mark": {+                "align": "left",+                "baseline": "top",+                "dx": 3,+                "dy": 1,+                "type": "text"+            },             "transform": [                 {-                    "groupby": [-                        "decade"-                    ],                     "aggregate": [                         {-                            "op": "argmin",                             "as": "aggregated",-                            "field": "scaled_date"+                            "field": "scaled_date",+                            "op": "argmin"                         }+                    ],+                    "groupby": [+                        "decade"                     ]                 },                 {@@ -69,33 +95,33 @@                     "as": "CO2",                     "calculate": "datum.aggregated.CO2"                 }-            ],-            "mark": {-                "dx": 3,-                "dy": 1,-                "align": "left",-                "type": "text",-                "baseline": "top"-            },+            ]+        },+        {             "encoding": {                 "text": {                     "field": "aggregated.year",                     "type": "nominal"                 }-            }-        },-        {+            },+            "mark": {+                "align": "left",+                "baseline": "bottom",+                "dx": 3,+                "dy": 1,+                "type": "text"+            },             "transform": [                 {-                    "groupby": [-                        "decade"-                    ],                     "aggregate": [                         {-                            "op": "argmax",                             "as": "aggregated",-                            "field": "scaled_date"+                            "field": "scaled_date",+                            "op": "argmax"                         }+                    ],+                    "groupby": [+                        "decade"                     ]                 },                 {@@ -106,52 +132,26 @@                     "as": "CO2",                     "calculate": "datum.aggregated.CO2"                 }-            ],-            "mark": {-                "dx": 3,-                "dy": 1,-                "align": "left",-                "type": "text",-                "baseline": "bottom"-            },-            "encoding": {-                "text": {-                    "field": "aggregated.year",-                    "type": "nominal"-                }-            }+            ]         }     ],-    "encoding": {-        "x": {-            "field": "scaled_date",-            "type": "quantitative",-            "axis": {-                "values": [-                    1,-                    2,-                    3,-                    4,-                    5,-                    6,-                    7,-                    8,-                    9-                ],-                "tickCount": 10,-                "title": "Year into decade"-            }+    "transform": [+        {+            "as": "year",+            "calculate": "year(datum.Date)"         },-        "y": {-            "field": "CO2",-            "scale": {-                "zero": false-            },-            "type": "quantitative",-            "axis": {-                "title": "CO2 concentration in ppm"-            }+        {+            "as": "month",+            "calculate": "month(datum.Date)"+        },+        {+            "as": "decade",+            "calculate": "floor(datum.year / 10)"+        },+        {+            "as": "scaled_date",+            "calculate": "(datum.year % 10) + (datum.month / 12)"         }-    },-    "description": "Carbon dioxide in the atmosphere."+    ],+    "width": 800 }
tests/specs/gallery/line/line11.vl view
@@ -1,108 +1,82 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "rank",-                    "as": "rank"-                }-            ],-            "groupby": [-                "matchday"-            ],-            "sort": [-                {-                    "field": "point",-                    "order": "descending"-                },-                {-                    "field": "diff",-                    "order": "descending"-                }-            ]-        }-    ],-    "mark": {-        "orient": "vertical",-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {                 "diff": -1,-                "point": 0,                 "matchday": 1,+                "point": 0,                 "team": "Germany"             },             {                 "diff": 1,-                "point": 3,                 "matchday": 1,+                "point": 3,                 "team": "Mexico"             },             {                 "diff": -1,-                "point": 0,                 "matchday": 1,+                "point": 0,                 "team": "South Korea"             },             {                 "diff": 1,-                "point": 3,                 "matchday": 1,+                "point": 3,                 "team": "Sweden"             },             {                 "diff": 0,-                "point": 3,                 "matchday": 2,+                "point": 3,                 "team": "Germany"             },             {                 "diff": 2,-                "point": 6,                 "matchday": 2,+                "point": 6,                 "team": "Mexico"             },             {                 "diff": -2,-                "point": 0,                 "matchday": 2,+                "point": 0,                 "team": "South Korea"             },             {                 "diff": 0,-                "point": 3,                 "matchday": 2,+                "point": 3,                 "team": "Sweden"             },             {                 "diff": -2,-                "point": 3,                 "matchday": 3,+                "point": 3,                 "team": "Germany"             },             {                 "diff": -1,-                "point": 6,                 "matchday": 3,+                "point": 6,                 "team": "Mexico"             },             {                 "diff": 0,-                "point": 3,                 "matchday": 3,+                "point": 3,                 "team": "South Korea"             },             {                 "diff": 3,-                "point": 6,                 "matchday": 3,+                "point": 6,                 "team": "Sweden"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Line chart showing ranks over time for thw World Cup 2018 Group F teams",     "encoding": {         "color": {             "field": "team",@@ -131,5 +105,31 @@             "type": "ordinal"         }     },-    "description": "Line chart showing ranks over time for thw World Cup 2018 Group F teams"+    "mark": {+        "orient": "vertical",+        "type": "line"+    },+    "transform": [+        {+            "groupby": [+                "matchday"+            ],+            "sort": [+                {+                    "field": "point",+                    "order": "descending"+                },+                {+                    "field": "diff",+                    "order": "descending"+                }+            ],+            "window": [+                {+                    "as": "rank",+                    "op": "rank"+                }+            ]+        }+    ] }
tests/specs/gallery/line/line12.vl view
@@ -1,15 +1,5 @@ {-    "transform": [-        {-            "as": "v",-            "calculate": "sin(datum.u)"-        },-        {-            "as": "w",-            "calculate": "cos(datum.u)"-        }-    ],-    "height": 150,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "u",@@ -18,11 +8,10 @@             "stop": 12.7         }     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Plots a function using a generated sequence",+    "height": 150,     "layer": [         {-            "mark": "line",             "encoding": {                 "x": {                     "field": "u",@@ -34,13 +23,10 @@                     "title": "sin(x)",                     "type": "quantitative"                 }-            }+            },+            "mark": "line"         },         {-            "mark": {-                "stroke": "firebrick",-                "type": "line"-            },             "encoding": {                 "x": {                     "field": "u",@@ -52,8 +38,22 @@                     "title": "cos(x)",                     "type": "quantitative"                 }+            },+            "mark": {+                "stroke": "firebrick",+                "type": "line"             }         }     ],-    "description": "Plots a function using a generated sequence"+    "transform": [+        {+            "as": "v",+            "calculate": "sin(datum.u)"+        },+        {+            "as": "w",+            "calculate": "cos(datum.u)"+        }+    ],+    "width": 300 }
tests/specs/gallery/line/line2.vl view
@@ -1,32 +1,32 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        }-    ],-    "mark": {-        "color": "green",-        "point": {-            "color": "purple"-        },-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Google's stock price over time with point markers.",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Google's stock price over time with point markers."+    "mark": {+        "color": "green",+        "point": {+            "color": "purple"+        },+        "type": "line"+    },+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        }+    ] }
tests/specs/gallery/line/line3.vl view
@@ -1,25 +1,25 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Stock prices of 5 tech companies over time.",     "encoding": {         "color": {             "field": "symbol",             "type": "nominal"         },         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Stock prices of 5 tech companies over time."+    "mark": "line" }
tests/specs/gallery/line/line4.vl view
@@ -1,12 +1,9 @@ {-    "mark": "line",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/barley.json"     },-    "width": {-        "step": 50-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Slope graph showing the change in yield for different barley sites. It shows the error in the year labels for the Morris site.",     "encoding": {         "color": {             "field": "site",@@ -20,10 +17,13 @@             "type": "ordinal"         },         "y": {-            "field": "yield",             "aggregate": "median",+            "field": "yield",             "type": "quantitative"         }     },-    "description": "Slope graph showing the change in yield for different barley sites. It shows the error in the year labels for the Morris site."+    "mark": "line",+    "width": {+        "step": 50+    } }
tests/specs/gallery/line/line5.vl view
@@ -1,29 +1,29 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        }-    ],-    "mark": {-        "interpolate": "step-after",-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Google's stock price over time (quantized as a step-chart).",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Google's stock price over time (quantized as a step-chart)."+    "mark": {+        "interpolate": "step-after",+        "type": "line"+    },+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        }+    ] }
tests/specs/gallery/line/line6.vl view
@@ -1,29 +1,29 @@ {-    "transform": [-        {-            "filter": "datum.symbol === 'GOOG'"-        }-    ],-    "mark": {-        "interpolate": "monotone",-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Google's stock price over time (smoothed with monotonic interpolation).",     "encoding": {         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Google's stock price over time (smoothed with monotonic interpolation)."+    "mark": {+        "interpolate": "monotone",+        "type": "line"+    },+    "transform": [+        {+            "filter": "datum.symbol === 'GOOG'"+        }+    ] }
tests/specs/gallery/line/line7.vl view
@@ -1,13 +1,13 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/driving.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A connected scatterplot can be created by customizing line order and adding point marker in the line mark definition.",     "encoding": {+        "order": {+            "field": "year"+        },         "x": {             "field": "miles",             "scale": {@@ -15,9 +15,6 @@             },             "type": "quantitative"         },-        "order": {-            "field": "year"-        },         "y": {             "field": "gas",             "scale": {@@ -26,5 +23,8 @@             "type": "quantitative"         }     },-    "description": "A connected scatterplot can be created by customizing line order and adding point marker in the line mark definition."+    "mark": {+        "point": true,+        "type": "line"+    } }
tests/specs/gallery/line/line8.vl view
@@ -1,9 +1,9 @@ {-    "mark": "trail",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Stock prices of five tech companies over time double encoding price with vertical position and line thickness.",     "encoding": {         "color": {             "field": "symbol",@@ -14,16 +14,16 @@             "type": "quantitative"         },         "x": {-            "field": "date",-            "type": "temporal",             "axis": {                 "format": "%Y"-            }+            },+            "field": "date",+            "type": "temporal"         },         "y": {             "field": "price",             "type": "quantitative"         }     },-    "description": "Stock prices of five tech companies over time double encoding price with vertical position and line thickness."+    "mark": "trail" }
tests/specs/gallery/line/line9.vl view
@@ -1,8 +1,5 @@ {-    "mark": {-        "point": true,-        "type": "line"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -35,7 +32,7 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Line chart with markers and invalid values.",     "encoding": {         "x": {             "field": "x",@@ -46,5 +43,8 @@             "type": "quantitative"         }     },-    "description": "Line chart with markers and invalid values."+    "mark": {+        "point": true,+        "type": "line"+    } }
tests/specs/gallery/line/linecolorhalo.vl view
@@ -1,16 +1,9 @@ {-    "transform": [-        {-            "groupby": [-                "date"-            ],-            "value": "price",-            "pivot": "symbol"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/stocks.csv"     },+    "description": "Multi-series Line Chart with Halo. Use pivot and repeat-layer as a workaround to facet groups of lines and their halo strokes. See https://github.com/vega/vega-lite/issues/6192 for more discussion.",     "repeat": {         "layer": [             "AAPL",@@ -23,11 +16,6 @@     "spec": {         "layer": [             {-                "mark": {-                    "strokeWidth": 4,-                    "stroke": "white",-                    "type": "line"-                },                 "encoding": {                     "x": {                         "field": "date",@@ -40,16 +28,20 @@                         "title": "price",                         "type": "quantitative"                     }+                },+                "mark": {+                    "stroke": "white",+                    "strokeWidth": 4,+                    "type": "line"                 }             },             {-                "mark": "line",                 "encoding": {                     "stroke": {-                        "type": "nominal",                         "datum": {                             "repeat": "layer"-                        }+                        },+                        "type": "nominal"                     },                     "x": {                         "field": "date",@@ -62,10 +54,18 @@                         "title": "price",                         "type": "quantitative"                     }-                }+                },+                "mark": "line"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Multi-series Line Chart with Halo. Use pivot and repeat-layer as a workaround to facet groups of lines and their halo strokes. See https://github.com/vega/vega-lite/issues/6192 for more discussion."+    "transform": [+        {+            "groupby": [+                "date"+            ],+            "pivot": "symbol",+            "value": "price"+        }+    ] }
tests/specs/gallery/multi/multi1.vl view
@@ -1,34 +1,52 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/sp500.csv"     },+    "description": "Overview and detail.",     "vconcat": [         {-            "mark": "area",-            "width": 500,             "encoding": {                 "x": {+                    "axis": {+                        "title": null+                    },                     "field": "date",                     "scale": {                         "domain": {                             "selection": "myBrush"                         }                     },-                    "type": "temporal",-                    "axis": {-                        "title": null-                    }+                    "type": "temporal"                 },                 "y": {                     "field": "price",                     "type": "quantitative"                 }-            }+            },+            "mark": "area",+            "width": 500         },         {+            "encoding": {+                "x": {+                    "axis": {+                        "format": "%Y"+                    },+                    "field": "date",+                    "type": "temporal"+                },+                "y": {+                    "axis": {+                        "grid": false,+                        "tickCount": 3+                    },+                    "field": "price",+                    "type": "quantitative"+                }+            },             "height": 60,             "mark": "area",-            "width": 480,             "selection": {                 "myBrush": {                     "encodings": [@@ -37,25 +55,7 @@                     "type": "interval"                 }             },-            "encoding": {-                "x": {-                    "field": "date",-                    "type": "temporal",-                    "axis": {-                        "format": "%Y"-                    }-                },-                "y": {-                    "field": "price",-                    "type": "quantitative",-                    "axis": {-                        "tickCount": 3,-                        "grid": false-                    }-                }-            }+            "width": 480         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Overview and detail."+    ] }
tests/specs/gallery/multi/multi2.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "repeat": {         "column": [             "distance",@@ -7,18 +8,28 @@         ]     },     "spec": {-        "transform": [-            {-                "as": "time",-                "calculate": "hours(datum.date)"-            }-        ],         "data": {-            "url": "https://vega.github.io/vega-lite/data/flights-2k.json",             "format": {                 "parse": {                     "date": "date"                 }+            },+            "url": "https://vega.github.io/vega-lite/data/flights-2k.json"+        },+        "description": "Cross-filter.",+        "encoding": {+            "x": {+                "bin": {+                    "maxbins": 20+                },+                "field": {+                    "repeat": "column"+                },+                "type": "quantitative"+            },+            "y": {+                "aggregate": "count",+                "type": "quantitative"             }         },         "layer": [@@ -34,37 +45,26 @@                 }             },             {+                "encoding": {+                    "color": {+                        "value": "goldenrod"+                    }+                },+                "mark": "bar",                 "transform": [                     {                         "filter": {                             "selection": "myBrush"                         }                     }-                ],-                "mark": "bar",-                "encoding": {-                    "color": {-                        "value": "goldenrod"-                    }-                }+                ]             }         ],-        "encoding": {-            "x": {-                "field": {-                    "repeat": "column"-                },-                "bin": {-                    "maxbins": 20-                },-                "type": "quantitative"-            },-            "y": {-                "aggregate": "count",-                "type": "quantitative"+        "transform": [+            {+                "as": "time",+                "calculate": "hours(datum.date)"             }-        },-        "description": "Cross-filter."-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+        ]+    } }
tests/specs/gallery/multi/multi3.vl view
@@ -1,45 +1,30 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Scatterplot matrix",     "repeat": {-        "row": [-            "Horsepower",-            "Acceleration",-            "Miles_per_Gallon"-        ],         "column": [             "Miles_per_Gallon",             "Acceleration",             "Horsepower"+        ],+        "row": [+            "Horsepower",+            "Acceleration",+            "Miles_per_Gallon"         ]     },     "spec": {-        "mark": "point",         "data": {             "url": "https://vega.github.io/vega-lite/data/cars.json"         },-        "selection": {-            "myBrush": {-                "resolve": "union",-                "zoom": "wheel![event.shiftKey]",-                "type": "interval",-                "translate": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",-                "on": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!"-            },-            "grid": {-                "bind": "scales",-                "resolve": "global",-                "zoom": "wheel![event.shiftKey]",-                "type": "interval",-                "translate": "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!"-            }-        },         "encoding": {             "color": {-                "value": "grey",                 "condition": {                     "field": "Origin",                     "selection": "myBrush",                     "type": "nominal"-                }+                },+                "value": "grey"             },             "x": {                 "field": {@@ -53,8 +38,23 @@                 },                 "type": "quantitative"             }+        },+        "mark": "point",+        "selection": {+            "grid": {+                "bind": "scales",+                "resolve": "global",+                "translate": "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",+                "type": "interval",+                "zoom": "wheel![event.shiftKey]"+            },+            "myBrush": {+                "on": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",+                "resolve": "union",+                "translate": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",+                "type": "interval",+                "zoom": "wheel![event.shiftKey]"+            }         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Scatterplot matrix"+    } }
tests/specs/gallery/multi/multi4.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "range": {             "heatmap": {@@ -9,6 +10,7 @@     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },+    "description": "A dashboard with cross-highlighting",     "resolve": {         "legend": {             "color": "independent",@@ -17,65 +19,84 @@     },     "vconcat": [         {+            "encoding": {+                "x": {+                    "bin": {+                        "maxbins": 10+                    },+                    "field": "IMDB_Rating",+                    "type": "quantitative"+                },+                "y": {+                    "bin": {+                        "maxbins": 10+                    },+                    "field": "Rotten_Tomatoes_Rating",+                    "type": "quantitative"+                }+            },             "layer": [                 {-                    "mark": "rect",                     "encoding": {                         "color": {                             "aggregate": "count",-                            "type": "quantitative",                             "legend": {                                 "direction": "horizontal",                                 "gradientLength": 120,                                 "title": "All Movies"-                            }+                            },+                            "type": "quantitative"                         }-                    }+                    },+                    "mark": "rect"                 },                 {-                    "transform": [-                        {-                            "filter": {-                                "selection": "myPts"-                            }-                        }-                    ],-                    "mark": "point",                     "encoding": {                         "color": {                             "value": "#666"                         },                         "size": {                             "aggregate": "count",-                            "type": "quantitative",                             "legend": {                                 "title": "In Selected Category"+                            },+                            "type": "quantitative"+                        }+                    },+                    "mark": "point",+                    "transform": [+                        {+                            "filter": {+                                "selection": "myPts"                             }                         }-                    }+                    ]                 }-            ],+            ]+        },+        {             "encoding": {+                "color": {+                    "condition": {+                        "selection": "myPts",+                        "value": "steelblue"+                    },+                    "value": "grey"+                },                 "x": {-                    "field": "IMDB_Rating",-                    "bin": {-                        "maxbins": 10+                    "axis": {+                        "labelAngle": -40                     },-                    "type": "quantitative"+                    "field": "Major_Genre",+                    "type": "nominal"                 },                 "y": {-                    "field": "Rotten_Tomatoes_Rating",-                    "bin": {-                        "maxbins": 10-                    },+                    "aggregate": "count",                     "type": "quantitative"                 }-            }-        },-        {+            },             "height": 120,             "mark": "bar",-            "width": 330,             "selection": {                 "myPts": {                     "encodings": [@@ -84,28 +105,7 @@                     "type": "single"                 }             },-            "encoding": {-                "color": {-                    "value": "grey",-                    "condition": {-                        "value": "steelblue",-                        "selection": "myPts"-                    }-                },-                "x": {-                    "field": "Major_Genre",-                    "type": "nominal",-                    "axis": {-                        "labelAngle": -40-                    }-                },-                "y": {-                    "aggregate": "count",-                    "type": "quantitative"-                }-            }+            "width": 330         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "A dashboard with cross-highlighting"+    ] }
tests/specs/gallery/multi/multi5.vl view
@@ -1,30 +1,14 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },+    "description": "A dashboard with cross-highlighting",+    "title": "Seattle Weather, 2012-2015",     "vconcat": [         {-            "transform": [-                {-                    "filter": {-                        "selection": "myClick"-                    }-                }-            ],-            "height": 300,-            "mark": "point",-            "width": 600,-            "selection": {-                "myBrush": {-                    "encodings": [-                        "x"-                    ],-                    "type": "interval"-                }-            },             "encoding": {                 "color": {-                    "value": "#cfdebe",                     "condition": {                         "field": "weather",                         "scale": {@@ -46,7 +30,8 @@                         "selection": "myBrush",                         "title": "Weather",                         "type": "nominal"-                    }+                    },+                    "value": "#cfdebe"                 },                 "size": {                     "field": "precipitation",@@ -59,15 +44,18 @@                     "type": "quantitative"                 },                 "x": {-                    "field": "date",-                    "timeUnit": "monthdate",-                    "type": "temporal",                     "axis": {                         "format": "%b",                         "title": "Date"-                    }+                    },+                    "field": "date",+                    "timeUnit": "monthdate",+                    "type": "temporal"                 },                 "y": {+                    "axis": {+                        "title": "Maximum Daily Temperature (C)"+                    },                     "field": "temp_max",                     "scale": {                         "domain": [@@ -75,34 +63,31 @@                             40                         ]                     },-                    "type": "quantitative",-                    "axis": {-                        "title": "Maximum Daily Temperature (C)"-                    }+                    "type": "quantitative"                 }-            }-        },-        {+            },+            "height": 300,+            "mark": "point",+            "selection": {+                "myBrush": {+                    "encodings": [+                        "x"+                    ],+                    "type": "interval"+                }+            },             "transform": [                 {                     "filter": {-                        "selection": "myBrush"+                        "selection": "myClick"                     }                 }             ],-            "mark": "bar",-            "width": 600,-            "selection": {-                "myClick": {-                    "encodings": [-                        "color"-                    ],-                    "type": "multi"-                }-            },+            "width": 600+        },+        {             "encoding": {                 "color": {-                    "value": "#acbf98",                     "condition": {                         "field": "weather",                         "scale": {@@ -123,7 +108,8 @@                         },                         "selection": "myClick",                         "type": "nominal"-                    }+                    },+                    "value": "#acbf98"                 },                 "x": {                     "aggregate": "count",@@ -133,10 +119,24 @@                     "field": "weather",                     "type": "nominal"                 }-            }+            },+            "mark": "bar",+            "selection": {+                "myClick": {+                    "encodings": [+                        "color"+                    ],+                    "type": "multi"+                }+            },+            "transform": [+                {+                    "filter": {+                        "selection": "myBrush"+                    }+                }+            ],+            "width": 600         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "title": "Seattle Weather, 2012-2015",-    "description": "A dashboard with cross-highlighting"+    ] }
tests/specs/gallery/multi/multi6.vl view
@@ -1,30 +1,24 @@ {-    "transform": [-        {-            "window": [-                {-                    "op": "row_number",-                    "as": "rowNumber"-                }-            ]+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "view": {+            "stroke": null         }-    ],+    },+    "data": {+        "url": "https://vega.github.io/vega-lite/data/cars.json"+    },+    "description": "Drag a rectangular brush to show (first 20) selected points in a table.",     "hconcat": [         {-            "mark": "point",-            "selection": {-                "brush": {-                    "type": "interval"-                }-            },             "encoding": {                 "color": {-                    "value": "grey",                     "condition": {                         "field": "Cylinders",                         "selection": "brush",                         "type": "ordinal"-                    }+                    },+                    "value": "grey"                 },                 "x": {                     "field": "Horsepower",@@ -34,9 +28,28 @@                     "field": "Miles_per_Gallon",                     "type": "quantitative"                 }+            },+            "mark": "point",+            "selection": {+                "brush": {+                    "type": "interval"+                }             }         },         {+            "encoding": {+                "text": {+                    "field": "Horsepower",+                    "type": "nominal"+                },+                "y": {+                    "axis": null,+                    "field": "rowNumber",+                    "type": "ordinal"+                }+            },+            "mark": "text",+            "title": "Engine power",             "transform": [                 {                     "filter": {@@ -46,8 +59,8 @@                 {                     "window": [                         {-                            "op": "rank",-                            "as": "rank"+                            "as": "rank",+                            "op": "rank"                         }                     ]                 },@@ -57,22 +70,22 @@                         "lt": 20                     }                 }-            ],-            "mark": "text",-            "title": "Engine power",+            ]+        },+        {             "encoding": {                 "text": {-                    "field": "Horsepower",+                    "field": "Miles_per_Gallon",                     "type": "nominal"                 },                 "y": {+                    "axis": null,                     "field": "rowNumber",-                    "type": "ordinal",-                    "axis": null+                    "type": "ordinal"                 }-            }-        },-        {+            },+            "mark": "text",+            "title": "Efficiency (mpg)",             "transform": [                 {                     "filter": {@@ -82,8 +95,8 @@                 {                     "window": [                         {-                            "op": "rank",-                            "as": "rank"+                            "as": "rank",+                            "op": "rank"                         }                     ]                 },@@ -93,22 +106,22 @@                         "lt": 20                     }                 }-            ],-            "mark": "text",-            "title": "Efficiency (mpg)",+            ]+        },+        {             "encoding": {                 "text": {-                    "field": "Miles_per_Gallon",+                    "field": "Origin",                     "type": "nominal"                 },                 "y": {+                    "axis": null,                     "field": "rowNumber",-                    "type": "ordinal",-                    "axis": null+                    "type": "ordinal"                 }-            }-        },-        {+            },+            "mark": "text",+            "title": "Country of origin",             "transform": [                 {                     "filter": {@@ -118,8 +131,8 @@                 {                     "window": [                         {-                            "op": "rank",-                            "as": "rank"+                            "as": "rank",+                            "op": "rank"                         }                     ]                 },@@ -129,35 +142,22 @@                         "lt": 20                     }                 }-            ],-            "mark": "text",-            "title": "Country of origin",-            "encoding": {-                "text": {-                    "field": "Origin",-                    "type": "nominal"-                },-                "y": {-                    "field": "rowNumber",-                    "type": "ordinal",-                    "axis": null-                }-            }+            ]         }     ],-    "config": {-        "view": {-            "stroke": null-        }-    },-    "data": {-        "url": "https://vega.github.io/vega-lite/data/cars.json"-    },     "resolve": {         "legend": {             "color": "independent"         }     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Drag a rectangular brush to show (first 20) selected points in a table."+    "transform": [+        {+            "window": [+                {+                    "as": "rowNumber",+                    "op": "row_number"+                }+            ]+        }+    ] }
tests/specs/gallery/multi/multi7.vl view
@@ -1,31 +1,52 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 900,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "One dot per airport in the US overlayed on geoshape",+    "height": 500,     "layer": [         {-            "mark": {-                "stroke": "#fff",-                "fill": "#ddd",-                "type": "geoshape"-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/us-10m.json",                 "format": {                     "feature": "states",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/us-10m.json"+            },+            "mark": {+                "fill": "#ddd",+                "stroke": "#fff",+                "type": "geoshape"             }         },         {+            "data": {+                "url": "https://vega.github.io/vega-lite/data/flights-airport.csv"+            },+            "encoding": {+                "latitude": {+                    "field": "o.latitude",+                    "type": "quantitative"+                },+                "latitude2": {+                    "field": "d.latitude"+                },+                "longitude": {+                    "field": "o.longitude",+                    "type": "quantitative"+                },+                "longitude2": {+                    "field": "d.longitude"+                }+            },+            "mark": {+                "color": "black",+                "opacity": 0.35,+                "type": "rule"+            },             "transform": [                 {                     "filter": {@@ -52,43 +73,64 @@                     },                     "lookup": "destination"                 }-            ],-            "mark": {-                "color": "black",-                "opacity": 0.35,-                "type": "rule"-            },+            ]+        },+        {             "data": {                 "url": "https://vega.github.io/vega-lite/data/flights-airport.csv"             },             "encoding": {                 "latitude": {-                    "field": "o.latitude",+                    "field": "latitude",                     "type": "quantitative"                 },-                "latitude2": {-                    "field": "d.latitude"-                },                 "longitude": {-                    "field": "o.longitude",+                    "field": "longitude",                     "type": "quantitative"                 },-                "longitude2": {-                    "field": "d.longitude"+                "order": {+                    "field": "routes",+                    "sort": "descending",+                    "type": "quantitative"+                },+                "size": {+                    "field": "routes",+                    "legend": null,+                    "scale": {+                        "range": [+                            0,+                            1000+                        ]+                    },+                    "type": "quantitative"+                },+                "tooltip": {+                    "field": "name",+                    "type": "nominal"                 }-            }-        },-        {-            "transform": [-                {-                    "groupby": [+            },+            "mark": "circle",+            "selection": {+                "mySelection": {+                    "empty": "none",+                    "fields": [                         "origin"                     ],+                    "nearest": true,+                    "on": "mouseover",+                    "type": "single"+                }+            },+            "transform": [+                {                     "aggregate": [                         {-                            "op": "count",-                            "as": "routes"+                            "as": "routes",+                            "op": "count"                         }+                    ],+                    "groupby": [+                        "origin"                     ]                 },                 {@@ -96,66 +138,24 @@                         "data": {                             "url": "https://vega.github.io/vega-lite/data/airports.csv"                         },-                        "key": "iata",                         "fields": [                             "name",                             "state",                             "latitude",                             "longitude"-                        ]+                        ],+                        "key": "iata"                     },                     "lookup": "origin"                 },                 {                     "filter": "datum.state !== 'PR' && datum.state !== 'VI'"                 }-            ],-            "mark": "circle",-            "data": {-                "url": "https://vega.github.io/vega-lite/data/flights-airport.csv"-            },-            "selection": {-                "mySelection": {-                    "nearest": true,-                    "empty": "none",-                    "type": "single",-                    "on": "mouseover",-                    "fields": [-                        "origin"-                    ]-                }-            },-            "encoding": {-                "size": {-                    "field": "routes",-                    "scale": {-                        "range": [-                            0,-                            1000-                        ]-                    },-                    "type": "quantitative",-                    "legend": null-                },-                "latitude": {-                    "field": "latitude",-                    "type": "quantitative"-                },-                "tooltip": {-                    "field": "name",-                    "type": "nominal"-                },-                "longitude": {-                    "field": "longitude",-                    "type": "quantitative"-                },-                "order": {-                    "field": "routes",-                    "sort": "descending",-                    "type": "quantitative"-                }-            }+            ]         }     ],-    "description": "One dot per airport in the US overlayed on geoshape"+    "projection": {+        "type": "albersUsa"+    },+    "width": 900 }
tests/specs/gallery/multi/multi8.vl view
@@ -1,72 +1,72 @@ {-    "transform": [-        {-            "as": "time",-            "calculate": "hours(datum.date) + minutes(datum.date) / 60"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "https://vega.github.io/vega-lite/data/flights-5k.json",         "format": {             "parse": {                 "date": "date"             }-        }+        },+        "url": "https://vega.github.io/vega-lite/data/flights-5k.json"     },+    "transform": [+        {+            "as": "time",+            "calculate": "hours(datum.date) + minutes(datum.date) / 60"+        }+    ],     "vconcat": [         {+            "encoding": {+                "x": {+                    "bin": {+                        "maxbins": 30+                    },+                    "field": "time",+                    "type": "quantitative"+                },+                "y": {+                    "aggregate": "count",+                    "type": "quantitative"+                }+            },             "height": 100,             "mark": "bar",-            "width": 963,             "selection": {                 "brush": {+                    "encodings": [+                        "x"+                    ],                     "init": {                         "x": [                             6,                             12                         ]                     },-                    "encodings": [-                        "x"-                    ],                     "type": "interval"                 }             },-            "encoding": {-                "x": {-                    "field": "time",-                    "bin": {-                        "maxbins": 30-                    },-                    "type": "quantitative"-                },-                "y": {-                    "aggregate": "count",-                    "type": "quantitative"-                }-            }+            "width": 963         },         {-            "height": 100,-            "mark": "bar",-            "width": 963,             "encoding": {                 "x": {-                    "field": "time",                     "bin": {-                        "maxbins": 30,                         "extent": {                             "selection": "brush"-                        }+                        },+                        "maxbins": 30                     },+                    "field": "time",                     "type": "quantitative"                 },                 "y": {                     "aggregate": "count",                     "type": "quantitative"                 }-            }+            },+            "height": 100,+            "mark": "bar",+            "width": 963         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/gallery/multi/selectandzoom.vl view
@@ -1,10 +1,5 @@ {-    "transform": [-        {-            "as": "y",-            "calculate": "cos(datum.theta)"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "sequence": {             "as": "theta",@@ -13,11 +8,33 @@             "stop": 6.28         }     },+    "transform": [+        {+            "as": "y",+            "calculate": "cos(datum.theta)"+        }+    ],     "vconcat": [         {+            "encoding": {+                "x": {+                    "axis": null,+                    "field": "theta",+                    "type": "quantitative"+                },+                "y": {+                    "axis": null,+                    "field": "y",+                    "type": "quantitative"+                }+            },             "mark": "line",             "selection": {                 "brush": {+                    "encodings": [+                        "x",+                        "y"+                    ],                     "init": {                         "x": [                             0.2,@@ -28,28 +45,11 @@                             0.8                         ]                     },-                    "encodings": [-                        "x",-                        "y"-                    ],                     "type": "interval"                 }-            },-            "encoding": {-                "x": {-                    "field": "theta",-                    "type": "quantitative",-                    "axis": null-                },-                "y": {-                    "field": "y",-                    "type": "quantitative",-                    "axis": null-                }             }         },         {-            "mark": "circle",             "encoding": {                 "x": {                     "field": "theta",@@ -65,14 +65,14 @@                     "field": "y",                     "scale": {                         "domain": {-                            "selection": "brush",-                            "encoding": "y"+                            "encoding": "y",+                            "selection": "brush"                         }                     },                     "type": "quantitative"                 }-            }+            },+            "mark": "circle"         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/gallery/repeat/nested_concat_align.vl view
@@ -1,16 +1,18 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "countTitle": "Count",+        "axisX": {+            "titleLimit": 150+        },         "axisY": {             "minExtent": 40         },-        "axisX": {-            "titleLimit": 150-        }+        "countTitle": "Count"     },     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },+    "description": "Nested concatenation aligned by setting axis minExtent",     "vconcat": [         {             "repeat": {@@ -20,24 +22,24 @@                 ]             },             "spec": {-                "height": 50,-                "mark": "bar",-                "width": 150,                 "encoding": {                     "x": {-                        "field": {-                            "repeat": "column"-                        },                         "bin": {                             "maxbins": 20                         },+                        "field": {+                            "repeat": "column"+                        },                         "type": "quantitative"                     },                     "y": {                         "aggregate": "count",                         "type": "quantitative"                     }-                }+                },+                "height": 50,+                "mark": "bar",+                "width": 150             },             "title": "Ratings"         },@@ -49,28 +51,26 @@                 ]             },             "spec": {-                "height": 50,-                "mark": "bar",-                "width": 150,                 "encoding": {                     "x": {-                        "field": {-                            "repeat": "column"-                        },                         "bin": {                             "maxbins": 20                         },+                        "field": {+                            "repeat": "column"+                        },                         "type": "quantitative"                     },                     "y": {                         "aggregate": "count",                         "type": "quantitative"                     }-                }+                },+                "height": 50,+                "mark": "bar",+                "width": 150             },             "title": "Gross"         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Nested concatenation aligned by setting axis minExtent"+    ] }
tests/specs/gallery/repeat/repeat1.vl view
@@ -1,7 +1,9 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/weather.csv"     },+    "description": "Monthly weather information for individual years and overall average for Seatle and New York",     "repeat": {         "column": [             "temp_max",@@ -12,12 +14,16 @@     "spec": {         "layer": [             {-                "mark": "line",                 "encoding": {                     "color": {                         "field": "location",                         "type": "nominal"                     },+                    "detail": {+                        "field": "date",+                        "timeUnit": "year",+                        "type": "temporal"+                    },                     "opacity": {                         "value": 0.2                     },@@ -26,22 +32,17 @@                         "timeUnit": "month",                         "type": "ordinal"                     },-                    "detail": {-                        "field": "date",-                        "timeUnit": "year",-                        "type": "temporal"-                    },                     "y": {+                        "aggregate": "mean",                         "field": {                             "repeat": "column"                         },-                        "aggregate": "mean",                         "type": "quantitative"                     }-                }+                },+                "mark": "line"             },             {-                "mark": "line",                 "encoding": {                     "color": {                         "field": "location",@@ -53,16 +54,15 @@                         "type": "ordinal"                     },                     "y": {+                        "aggregate": "mean",                         "field": {                             "repeat": "column"                         },-                        "aggregate": "mean",                         "type": "quantitative"                     }-                }+                },+                "mark": "line"             }         ]-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Monthly weather information for individual years and overall average for Seatle and New York"+    } }
tests/specs/gallery/repeat/repeat2.vl view
@@ -1,15 +1,16 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "data": {+        "url": "https://vega.github.io/vega-lite/data/weather.csv"+    },+    "description": "Two vertically concatenated charts that show a histogram of precipitation in Seattle and the relationship between min and max temperature",     "transform": [         {             "filter": "datum.location === 'Seattle'"         }     ],-    "data": {-        "url": "https://vega.github.io/vega-lite/data/weather.csv"-    },     "vconcat": [         {-            "mark": "bar",             "encoding": {                 "x": {                     "field": "date",@@ -17,32 +18,31 @@                     "type": "ordinal"                 },                 "y": {-                    "field": "precipitation",                     "aggregate": "mean",+                    "field": "precipitation",                     "type": "quantitative"                 }-            }+            },+            "mark": "bar"         },         {-            "mark": "point",             "encoding": {                 "size": {                     "aggregate": "count",                     "type": "quantitative"                 },                 "x": {-                    "field": "temp_min",                     "bin": true,+                    "field": "temp_min",                     "type": "quantitative"                 },                 "y": {-                    "field": "temp_max",                     "bin": true,+                    "field": "temp_max",                     "type": "quantitative"                 }-            }+            },+            "mark": "point"         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Two vertically concatenated charts that show a histogram of precipitation in Seattle and the relationship between min and max temperature"+    ] }
tests/specs/gallery/repeat/repeat3.vl view
@@ -1,4 +1,6 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Horizontally repeated charts that show the histograms of different parameters of cars in different countries",     "repeat": {         "column": [             "Horsepower",@@ -7,7 +9,6 @@         ]     },     "spec": {-        "mark": "bar",         "data": {             "url": "https://vega.github.io/vega-lite/data/cars.json"         },@@ -17,18 +18,17 @@                 "type": "nominal"             },             "x": {+                "bin": true,                 "field": {                     "repeat": "column"                 },-                "bin": true,                 "type": "quantitative"             },             "y": {                 "aggregate": "count",                 "type": "quantitative"             }-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Horizontally repeated charts that show the histograms of different parameters of cars in different countries"+        },+        "mark": "bar"+    } }
tests/specs/gallery/repeat/repeat4.vl view
@@ -1,45 +1,30 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Scatterplot matrix",     "repeat": {-        "row": [-            "Horsepower",-            "Acceleration",-            "Miles_per_Gallon"-        ],         "column": [             "Miles_per_Gallon",             "Acceleration",             "Horsepower"+        ],+        "row": [+            "Horsepower",+            "Acceleration",+            "Miles_per_Gallon"         ]     },     "spec": {-        "mark": "point",         "data": {             "url": "https://vega.github.io/vega-lite/data/cars.json"         },-        "selection": {-            "myBrush": {-                "resolve": "union",-                "zoom": "wheel![event.shiftKey]",-                "type": "interval",-                "translate": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",-                "on": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!"-            },-            "grid": {-                "bind": "scales",-                "resolve": "global",-                "zoom": "wheel![event.shiftKey]",-                "type": "interval",-                "translate": "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!"-            }-        },         "encoding": {             "color": {-                "value": "grey",                 "condition": {                     "field": "Origin",                     "selection": "myBrush",                     "type": "nominal"-                }+                },+                "value": "grey"             },             "x": {                 "field": {@@ -53,8 +38,23 @@                 },                 "type": "quantitative"             }+        },+        "mark": "point",+        "selection": {+            "grid": {+                "bind": "scales",+                "resolve": "global",+                "translate": "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",+                "type": "interval",+                "zoom": "wheel![event.shiftKey]"+            },+            "myBrush": {+                "on": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",+                "resolve": "union",+                "translate": "[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",+                "type": "interval",+                "zoom": "wheel![event.shiftKey]"+            }         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Scatterplot matrix"+    } }
tests/specs/gallery/repeat/repeat5.vl view
@@ -1,4 +1,6 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "bounds": "flush",     "config": {         "range": {             "heatmap": {@@ -12,85 +14,83 @@     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },+    "description": "Marginal histograms show the counts along the x and y dimension",+    "spacing": 15,     "vconcat": [         {-            "height": 60,-            "mark": "bar",             "encoding": {                 "x": {-                    "field": "IMDB_Rating",+                    "axis": null,                     "bin": true,-                    "type": "quantitative",-                    "axis": null+                    "field": "IMDB_Rating",+                    "type": "quantitative"                 },                 "y": {+                    "aggregate": "count",+                    "axis": {+                        "title": null+                    },                     "scale": {                         "domain": [                             0,                             1000                         ]                     },-                    "aggregate": "count",-                    "type": "quantitative",-                    "axis": {-                        "title": null-                    }+                    "type": "quantitative"                 }-            }+            },+            "height": 60,+            "mark": "bar"         },         {+            "bounds": "flush",             "hconcat": [                 {-                    "mark": "rect",                     "encoding": {                         "color": {                             "aggregate": "count",                             "type": "quantitative"                         },                         "x": {-                            "field": "IMDB_Rating",                             "bin": true,+                            "field": "IMDB_Rating",                             "type": "quantitative"                         },                         "y": {-                            "field": "Rotten_Tomatoes_Rating",                             "bin": true,+                            "field": "Rotten_Tomatoes_Rating",                             "type": "quantitative"                         }-                    }+                    },+                    "mark": "rect"                 },                 {-                    "mark": "bar",-                    "width": 60,                     "encoding": {                         "x": {+                            "aggregate": "count",+                            "axis": {+                                "title": null+                            },                             "scale": {                                 "domain": [                                     0,                                     1000                                 ]                             },-                            "aggregate": "count",-                            "type": "quantitative",-                            "axis": {-                                "title": null-                            }+                            "type": "quantitative"                         },                         "y": {-                            "field": "Rotten_Tomatoes_Rating",+                            "axis": null,                             "bin": true,-                            "type": "quantitative",-                            "axis": null+                            "field": "Rotten_Tomatoes_Rating",+                            "type": "quantitative"                         }-                    }+                    },+                    "mark": "bar",+                    "width": 60                 }             ],-            "spacing": 15,-            "bounds": "flush"+            "spacing": 15         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "description": "Marginal histograms show the counts along the x and y dimension",-    "spacing": 15,-    "bounds": "flush"+    ] }
tests/specs/gallery/scatter/scatter1.vl view
@@ -1,14 +1,9 @@ {-    "mark": {-        "tooltip": {-            "content": "data"-        },-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A scatterplot showing horsepower and miles per gallon for various cars (via point marks).",     "encoding": {         "x": {             "field": "Horsepower",@@ -19,5 +14,10 @@             "type": "quantitative"         }     },-    "description": "A scatterplot showing horsepower and miles per gallon for various cars (via point marks)."+    "mark": {+        "tooltip": {+            "content": "data"+        },+        "type": "point"+    } }
tests/specs/gallery/scatter/scatter10.vl view
@@ -1,54 +1,54 @@ {-    "transform": [-        {-            "filter": "datum.Entity !== 'All natural disasters'"-        }-    ],-    "height": 400,-    "mark": {-        "strokeWidth": 1,-        "opacity": 0.8,-        "stroke": "black",-        "type": "circle"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/disasters.csv"     },-    "width": 600,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Visualization of global deaths from natural disasters. Copy of chart from https://ourworldindata.org/natural-catastrophes",     "encoding": {         "color": {             "field": "Entity",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },         "size": {             "field": "Deaths",+            "legend": {+                "title": "Annual Global Deaths"+            },             "scale": {                 "range": [                     0,                     5000                 ]             },-            "type": "quantitative",-            "legend": {-                "title": "Annual Global Deaths"-            }+            "type": "quantitative"         },         "x": {-            "field": "Year",-            "type": "ordinal",             "axis": {                 "labelAngle": 0-            }+            },+            "field": "Year",+            "type": "ordinal"         },         "y": {-            "field": "Entity",-            "type": "nominal",             "axis": {                 "title": null-            }+            },+            "field": "Entity",+            "type": "nominal"         }     },-    "description": "Visualization of global deaths from natural disasters. Copy of chart from https://ourworldindata.org/natural-catastrophes"+    "height": 400,+    "mark": {+        "opacity": 0.8,+        "stroke": "black",+        "strokeWidth": 1,+        "type": "circle"+    },+    "transform": [+        {+            "filter": "datum.Entity !== 'All natural disasters'"+        }+    ],+    "width": 600 }
tests/specs/gallery/scatter/scatter11.vl view
@@ -1,15 +1,9 @@ {-    "transform": [-        {-            "as": "OriginInitial",-            "calculate": "datum.Origin[0]"-        }-    ],-    "mark": "text",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A scatterplot showing horsepower and miles per gallon with country of origin double encoded by colour and text symbol.",     "encoding": {         "color": {             "field": "Origin",@@ -28,5 +22,11 @@             "type": "quantitative"         }     },-    "description": "A scatterplot showing horsepower and miles per gallon with country of origin double encoded by colour and text symbol."+    "mark": "text",+    "transform": [+        {+            "as": "OriginInitial",+            "calculate": "datum.Origin[0]"+        }+    ] }
tests/specs/gallery/scatter/scatter2.vl view
@@ -1,14 +1,14 @@ {-    "mark": "tick",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Shows the distribution of a single variable (precipitation) using tick marks.",     "encoding": {         "x": {             "field": "precipitation",             "type": "quantitative"         }     },-    "description": "Shows the distribution of a single variable (precipitation) using tick marks."+    "mark": "tick" }
tests/specs/gallery/scatter/scatter3.vl view
@@ -1,9 +1,9 @@ {-    "mark": "tick",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Shows the relationship between horsepower and the number of cylinders using tick marks.",     "encoding": {         "x": {             "field": "Horsepower",@@ -14,5 +14,5 @@             "type": "ordinal"         }     },-    "description": "Shows the relationship between horsepower and the number of cylinders using tick marks."+    "mark": "tick" }
tests/specs/gallery/scatter/scatter4.vl view
@@ -1,9 +1,9 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A scatterplot showing horsepower and miles per gallon with country of origin double encoded by colour and shape.",     "encoding": {         "color": {             "field": "Origin",@@ -22,5 +22,5 @@             "type": "quantitative"         }     },-    "description": "A scatterplot showing horsepower and miles per gallon with country of origin double encoded by colour and shape."+    "mark": "point" }
tests/specs/gallery/scatter/scatter5.vl view
@@ -1,28 +1,28 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A binned scatterplot comparing IMDB and Rotten Tomatoes rating with marks sized by number of reviews.",     "encoding": {         "size": {             "aggregate": "count",             "type": "quantitative"         },         "x": {-            "field": "IMDB_Rating",             "bin": {                 "maxbins": 10             },+            "field": "IMDB_Rating",             "type": "quantitative"         },         "y": {-            "field": "Rotten_Tomatoes_Rating",             "bin": {                 "maxbins": 10             },+            "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }     },-    "description": "A binned scatterplot comparing IMDB and Rotten Tomatoes rating with marks sized by number of reviews."+    "mark": "circle" }
tests/specs/gallery/scatter/scatter6.vl view
@@ -1,9 +1,9 @@ {-    "mark": "point",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A bubbleplot showing horsepower on x, miles per gallons on y, and acceleration on size.",     "encoding": {         "size": {             "field": "Acceleration",@@ -18,5 +18,5 @@             "type": "quantitative"         }     },-    "description": "A bubbleplot showing horsepower on x, miles per gallons on y, and acceleration on size."+    "mark": "point" }
tests/specs/gallery/scatter/scatter7.vl view
@@ -1,21 +1,21 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "mark": {             "invalid": null         }     },-    "mark": "point",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Scatterplot with Null values in grey",     "encoding": {         "color": {-            "value": "rgb(76,120,168)",             "condition": {-                "value": "#ddd",-                "test": "datum.IMDB_Rating === null || datum.Rotten_Tomatoes_Rating === null"-            }+                "test": "datum.IMDB_Rating === null || datum.Rotten_Tomatoes_Rating === null",+                "value": "#ddd"+            },+            "value": "rgb(76,120,168)"         },         "x": {             "field": "IMDB_Rating",@@ -26,5 +26,5 @@             "type": "quantitative"         }     },-    "description": "Scatterplot with Null values in grey"+    "mark": "point" }
tests/specs/gallery/scatter/scatter8.vl view
@@ -1,9 +1,9 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "A scatterplot showing horsepower and miles per gallon for various cars (via circle marks).",     "encoding": {         "x": {             "field": "Horsepower",@@ -14,5 +14,5 @@             "type": "quantitative"         }     },-    "description": "A scatterplot showing horsepower and miles per gallon for various cars (via circle marks)."+    "mark": "circle" }
tests/specs/gallery/scatter/scatter9.vl view
@@ -1,17 +1,9 @@ {-    "height": 300,-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/gapminder-health-income.csv"     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "view": {-            "bind": "scales",-            "type": "interval"-        }-    },+    "description": "A bubble plot showing the correlation between health and income for 187 countries in the world (modified from an example in Lisa Charlotte Rost's blog post 'One Chart, Twelve Charting Libraries' --http://lisacharlotterost.github.io/2016/05/17/one-chart-code/).",     "encoding": {         "color": {             "value": "#000"@@ -35,5 +27,13 @@             "type": "quantitative"         }     },-    "description": "A bubble plot showing the correlation between health and income for 187 countries in the world (modified from an example in Lisa Charlotte Rost's blog post 'One Chart, Twelve Charting Libraries' --http://lisacharlotterost.github.io/2016/05/17/one-chart-code/)."+    "height": 300,+    "mark": "circle",+    "selection": {+        "view": {+            "bind": "scales",+            "type": "interval"+        }+    },+    "width": 500 }
tests/specs/gallery/scatter/smoothing1.vl view
@@ -1,32 +1,46 @@ {-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "How can we 'smooth' data?",+    "encoding": {+        "x": {+            "field": "Rotten_Tomatoes_Rating",+            "type": "quantitative"+        },+        "y": {+            "field": "IMDB_Rating",+            "type": "quantitative"+        }+    },+    "height": 300,     "layer": [         {             "mark": {+                "filled": true,                 "opacity": 0.3,-                "type": "point",-                "filled": true+                "type": "point"             }         },         {+            "mark": {+                "color": "firebrick",+                "type": "line"+            },             "transform": [                 {                     "bandwidth": 0.1,                     "loess": "IMDB_Rating",                     "on": "Rotten_Tomatoes_Rating"                 }-            ],-            "mark": {-                "color": "firebrick",-                "type": "line"-            }+            ]         },         {+            "mark": {+                "color": "orange",+                "type": "line"+            },             "transform": [                 {                     "extent": [@@ -34,26 +48,12 @@                         90                     ],                     "method": "poly",-                    "regression": "IMDB_Rating",+                    "on": "Rotten_Tomatoes_Rating",                     "order": 3,-                    "on": "Rotten_Tomatoes_Rating"+                    "regression": "IMDB_Rating"                 }-            ],-            "mark": {-                "color": "orange",-                "type": "line"-            }+            ]         }     ],-    "encoding": {-        "x": {-            "field": "Rotten_Tomatoes_Rating",-            "type": "quantitative"-        },-        "y": {-            "field": "IMDB_Rating",-            "type": "quantitative"-        }-    },-    "description": "How can we 'smooth' data?"+    "width": 300 }
tests/specs/gallery/scatter/smoothing2.vl view
@@ -1,17 +1,12 @@ {-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "How can we 'smooth' and rename data?",+    "height": 300,     "layer": [         {-            "mark": {-                "opacity": 0.3,-                "type": "point",-                "filled": true-            },             "encoding": {                 "x": {                     "field": "Rotten_Tomatoes_Rating",@@ -21,23 +16,14 @@                     "field": "IMDB_Rating",                     "type": "quantitative"                 }+            },+            "mark": {+                "filled": true,+                "opacity": 0.3,+                "type": "point"             }         },         {-            "transform": [-                {-                    "as": [-                        "Rotten_Tomatoes_Rating",-                        "ly"-                    ],-                    "loess": "IMDB_Rating",-                    "on": "Rotten_Tomatoes_Rating"-                }-            ],-            "mark": {-                "color": "firebrick",-                "type": "line"-            },             "encoding": {                 "x": {                     "field": "Rotten_Tomatoes_Rating",@@ -47,23 +33,23 @@                     "field": "ly",                     "type": "quantitative"                 }-            }-        },-        {+            },+            "mark": {+                "color": "firebrick",+                "type": "line"+            },             "transform": [                 {                     "as": [                         "Rotten_Tomatoes_Rating",-                        "ry"+                        "ly"                     ],-                    "regression": "IMDB_Rating",+                    "loess": "IMDB_Rating",                     "on": "Rotten_Tomatoes_Rating"                 }-            ],-            "mark": {-                "color": "orange",-                "type": "line"-            },+            ]+        },+        {             "encoding": {                 "x": {                     "field": "Rotten_Tomatoes_Rating",@@ -73,8 +59,22 @@                     "field": "ry",                     "type": "quantitative"                 }-            }+            },+            "mark": {+                "color": "orange",+                "type": "line"+            },+            "transform": [+                {+                    "as": [+                        "Rotten_Tomatoes_Rating",+                        "ry"+                    ],+                    "on": "Rotten_Tomatoes_Rating",+                    "regression": "IMDB_Rating"+                }+            ]         }     ],-    "description": "How can we 'smooth' and rename data?"+    "width": 300 }
tests/specs/gallery/table/table1.vl view
@@ -1,13 +1,13 @@ {-    "mark": "rect",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "'Table heatmap' showing engine size/power for three countries.",     "encoding": {         "color": {-            "field": "Horsepower",             "aggregate": "mean",+            "field": "Horsepower",             "type": "quantitative"         },         "x": {@@ -19,5 +19,5 @@             "type": "nominal"         }     },-    "description": "'Table heatmap' showing engine size/power for three countries."+    "mark": "rect" }
tests/specs/gallery/table/table2.vl view
@@ -1,45 +1,45 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "view": {-            "strokeWidth": 0,-            "step": 13-        },         "axis": {             "domain": false+        },+        "view": {+            "step": 13,+            "strokeWidth": 0         }     },-    "mark": "rect",     "data": {         "url": "https://vega.github.io/vega-lite/data/seattle-temps.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Annual weather 'heatmap'",     "encoding": {         "color": {-            "field": "temp",             "aggregate": "max",-            "type": "quantitative",+            "field": "temp",             "legend": {                 "title": null-            }+            },+            "type": "quantitative"         },         "x": {-            "field": "date",-            "timeUnit": "date",-            "type": "ordinal",             "axis": {-                "labelAngle": 0,                 "format": "%e",+                "labelAngle": 0,                 "title": "Day"-            }+            },+            "field": "date",+            "timeUnit": "date",+            "type": "ordinal"         },         "y": {-            "field": "date",-            "timeUnit": "month",-            "type": "ordinal",             "axis": {                 "title": "Month"-            }+            },+            "field": "date",+            "timeUnit": "month",+            "type": "ordinal"         }     },-    "description": "Annual weather 'heatmap'"+    "mark": "rect" }
tests/specs/gallery/table/table3.vl view
@@ -1,21 +1,5 @@ {-    "transform": [-        {-            "filter": {-                "and": [-                    {-                        "field": "IMDB_Rating",-                        "valid": true-                    },-                    {-                        "field": "Rotten_Tomatoes_Rating",-                        "valid": true-                    }-                ]-            }-        }-    ],-    "height": 200,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "range": {             "heatmap": {@@ -26,31 +10,47 @@             "stroke": null         }     },-    "mark": "rect",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "'Binned heatmap' comparing movie ratings.",     "encoding": {         "color": {             "aggregate": "count",             "type": "quantitative"         },         "x": {-            "field": "IMDB_Rating",             "bin": {                 "maxbins": 60             },+            "field": "IMDB_Rating",             "type": "quantitative"         },         "y": {-            "field": "Rotten_Tomatoes_Rating",             "bin": {                 "maxbins": 40             },+            "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }     },-    "description": "'Binned heatmap' comparing movie ratings."+    "height": 200,+    "mark": "rect",+    "transform": [+        {+            "filter": {+                "and": [+                    {+                        "field": "IMDB_Rating",+                        "valid": true+                    },+                    {+                        "field": "Rotten_Tomatoes_Rating",+                        "valid": true+                    }+                ]+            }+        }+    ],+    "width": 300 }
tests/specs/gallery/table/table4.vl view
@@ -1,13 +1,13 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/github.csv"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Table bubble plot in the style of a Github punched card.",     "encoding": {         "size": {-            "field": "count",             "aggregate": "sum",+            "field": "count",             "type": "quantitative"         },         "x": {@@ -21,5 +21,5 @@             "type": "ordinal"         }     },-    "description": "Table bubble plot in the style of a Github punched card."+    "mark": "circle" }
tests/specs/gallery/table/table5.vl view
@@ -1,51 +1,51 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "text": {-            "baseline": "middle"-        },         "scale": {             "bandPaddingInner": 0,             "bandPaddingOuter": 0+        },+        "text": {+            "baseline": "middle"         }     },     "data": {         "url": "https://vega.github.io/vega-lite/data/cars.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "description": "Layering text over 'heatmap'.",+    "encoding": {+        "x": {+            "field": "Cylinders",+            "type": "ordinal"+        },+        "y": {+            "field": "Origin",+            "type": "ordinal"+        }+    },     "layer": [         {-            "mark": "rect",             "encoding": {                 "color": {-                    "field": "*",                     "aggregate": "count",+                    "field": "*",                     "type": "quantitative"                 }-            }+            },+            "mark": "rect"         },         {-            "mark": "text",             "encoding": {                 "color": {                     "value": "white"                 },                 "text": {-                    "field": "*",                     "aggregate": "count",+                    "field": "*",                     "type": "quantitative"                 }-            }-        }-    ],-    "encoding": {-        "x": {-            "field": "Cylinders",-            "type": "ordinal"-        },-        "y": {-            "field": "Origin",-            "type": "ordinal"+            },+            "mark": "text"         }-    },-    "description": "Layering text over 'heatmap'."+    ] }
tests/specs/geo/choropleth1.vl view
@@ -1,27 +1,27 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": {-        "strokeOpacity": 0,-        "type": "geoshape"-    },     "data": {-        "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json",         "format": {             "feature": "boroughs",             "type": "topojson"-        }+        },+        "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json"     },-    "width": 900,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "id",             "type": "nominal"         }-    }+    },+    "height": 500,+    "mark": {+        "strokeOpacity": 0,+        "type": "geoshape"+    },+    "width": 900 }
tests/specs/geo/choropleth2.vl view
@@ -1,29 +1,24 @@ {-    "height": 700,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 1200,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "height": 700,     "layer": [         {-            "mark": {-                "strokeWidth": 2,-                "stroke": "rgb(251,247,238)",-                "type": "geoshape"-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json",                 "format": {                     "feature": "boroughs",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json"             },             "encoding": {                 "color": {                     "field": "id",+                    "legend": null,                     "scale": {                         "domain": [                             "Kingston upon Thames",@@ -96,30 +91,23 @@                             "#c7bfad"                         ]                     },-                    "type": "nominal",-                    "legend": null+                    "type": "nominal"                 },                 "opacity": {                     "value": 1                 }+            },+            "mark": {+                "stroke": "rgb(251,247,238)",+                "strokeWidth": 2,+                "type": "geoshape"             }         },         {-            "transform": [-                {-                    "as": "bLabel",-                    "calculate": "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"-                }-            ],-            "mark": "text",             "data": {                 "url": "https://vega.github.io/vega-lite/data/londonCentroids.json"             },             "encoding": {-                "text": {-                    "field": "bLabel",-                    "type": "nominal"-                },                 "latitude": {                     "field": "cy",                     "type": "quantitative"@@ -127,8 +115,20 @@                 "longitude": {                     "field": "cx",                     "type": "quantitative"+                },+                "text": {+                    "field": "bLabel",+                    "type": "nominal"                 }-            }+            },+            "mark": "text",+            "transform": [+                {+                    "as": "bLabel",+                    "calculate": "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"+                }+            ]         }-    ]+    ],+    "width": 1200 }
tests/specs/geo/defaultSize1.vl view
@@ -1,20 +1,20 @@ {-    "mark": "geoshape",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "https://vega.github.io/vega-lite/data/us-10m.json",         "format": {             "feature": "counties",             "type": "topojson"-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"+        },+        "url": "https://vega.github.io/vega-lite/data/us-10m.json"     },+    "description": "Default map size",     "encoding": {         "color": {             "value": "black"         }     },-    "description": "Default map size"+    "mark": "geoshape",+    "projection": {+        "type": "albersUsa"+    } }
tests/specs/geo/defaultSize2.vl view
@@ -1,26 +1,26 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "continuousHeight": 300,             "continuousWidth": 500         }     },-    "mark": "geoshape",     "data": {-        "url": "https://vega.github.io/vega-lite/data/us-10m.json",         "format": {             "feature": "counties",             "type": "topojson"-        }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"+        },+        "url": "https://vega.github.io/vega-lite/data/us-10m.json"     },+    "description": "Default map size with view width and height specified in config.",     "encoding": {         "color": {             "value": "black"         }     },-    "description": "Default map size with view width and height specified in config."+    "mark": "geoshape",+    "projection": {+        "type": "albersUsa"+    } }
tests/specs/geo/dotMap1.vl view
@@ -1,28 +1,14 @@ {-    "transform": [-        {-            "as": "digit",-            "calculate": "substring(datum.zip_code, 0, 1)"-        }-    ],-    "height": 300,-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/zipcodes.csv"     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "description": "US zip codes: One dot per zipcode colored by first digit",     "encoding": {         "color": {             "field": "digit",             "type": "nominal"         },-        "size": {-            "value": 1-        },         "latitude": {             "field": "latitude",             "type": "quantitative"@@ -30,7 +16,21 @@         "longitude": {             "field": "longitude",             "type": "quantitative"+        },+        "size": {+            "value": 1         }     },-    "description": "US zip codes: One dot per zipcode colored by first digit"+    "height": 300,+    "mark": "circle",+    "projection": {+        "type": "albersUsa"+    },+    "transform": [+        {+            "as": "digit",+            "calculate": "substring(datum.zip_code, 0, 1)"+        }+    ],+    "width": 500 }
tests/specs/geo/geo_constant_value.vl view
@@ -1,23 +1,15 @@ {-    "height": 300,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/airports.csv"     },-    "width": 500,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },+    "height": 300,     "layer": [         {-            "mark": "square",             "encoding": {                 "color": {                     "value": "gray"                 },-                "size": {-                    "value": 1-                },                 "latitude": {                     "field": "latitude",                     "type": "quantitative"@@ -25,44 +17,52 @@                 "longitude": {                     "field": "longitude",                     "type": "quantitative"+                },+                "size": {+                    "value": 1                 }-            }+            },+            "mark": "square"         },         {-            "mark": "square",             "encoding": {                 "color": {                     "value": "steelblue"                 },-                "size": {-                    "value": 1-                },                 "latitude": {                     "field": "latitude",                     "type": "quantitative"                 },                 "longitude": {                     "datum": -122.335167+                },+                "size": {+                    "value": 1                 }-            }+            },+            "mark": "square"         },         {-            "mark": "square",             "encoding": {                 "color": {                     "value": "firebrick"                 },-                "size": {-                    "value": 1-                },                 "latitude": {                     "datum": 47.608013                 },                 "longitude": {                     "field": "longitude",                     "type": "quantitative"+                },+                "size": {+                    "value": 1                 }-            }+            },+            "mark": "square"         }-    ]+    ],+    "projection": {+        "type": "albersUsa"+    },+    "width": 500 }
tests/specs/geo/graticule1.vl view
@@ -1,34 +1,34 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic",-        "rotate": [-            -42,-            -30,-            0-        ]-    },+    "height": 300,     "layer": [         {+            "data": {+                "sphere": true+            },             "mark": {                 "fill": "aliceblue",                 "type": "geoshape"-            },-            "data": {-                "sphere": true             }         },         {-            "mark": {-                "strokeWidth": 0.3,-                "type": "geoshape",-                "filled": false-            },             "data": {                 "graticule": true+            },+            "mark": {+                "filled": false,+                "strokeWidth": 0.3,+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "rotate": [+            -42,+            -30,+            0+        ],+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/geo/graticule2.vl view
@@ -1,34 +1,19 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic",-        "rotate": [-            -42,-            -30,-            0-        ]-    },+    "height": 300,     "layer": [         {+            "data": {+                "sphere": true+            },             "mark": {                 "fill": "aliceblue",                 "type": "geoshape"-            },-            "data": {-                "sphere": true             }         },         {-            "mark": {-                "strokeWidth": 0.3,-                "type": "geoshape",-                "filled": false-            },             "data": {                 "graticule": {-                    "precision": 2,                     "extent": [                         [                             0,@@ -39,12 +24,27 @@                             90                         ]                     ],+                    "precision": 2,                     "step": [                         2,                         2                     ]                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 0.3,+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "rotate": [+            -42,+            -30,+            0+        ],+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/geo/graticule3.vl view
@@ -1,37 +1,19 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic",-        "rotate": [-            -42,-            -30,-            0-        ]-    },+    "height": 300,     "layer": [         {+            "data": {+                "sphere": true+            },             "mark": {                 "fill": "aliceblue",                 "type": "geoshape"-            },-            "data": {-                "sphere": true             }         },         {-            "mark": {-                "strokeWidth": 0.3,-                "type": "geoshape",-                "filled": false-            },             "data": {                 "graticule": {-                    "stepMinor": [-                        2,-                        2-                    ],                     "extentMajor": [                         [                             0,@@ -51,9 +33,27 @@                             90,                             75.01                         ]+                    ],+                    "stepMinor": [+                        2,+                        2                     ]                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 0.3,+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "rotate": [+            -42,+            -30,+            0+        ],+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/geo/graticule4.vl view
@@ -1,31 +1,17 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic",-        "rotate": [-            -42,-            -30,-            0-        ]-    },+    "height": 300,     "layer": [         {+            "data": {+                "sphere": true+            },             "mark": {                 "fill": "aliceblue",                 "type": "geoshape"-            },-            "data": {-                "sphere": true             }         },         {-            "mark": {-                "strokeWidth": 0.3,-                "type": "geoshape",-                "filled": false-            },             "data": {                 "graticule": {                     "stepMinor": [@@ -33,7 +19,21 @@                         30                     ]                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 0.3,+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "rotate": [+            -42,+            -30,+            0+        ],+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/geo/linear1.vl view
@@ -1,22 +1,22 @@ {-    "height": 500,-    "mark": {-        "type": "geoshape",-        "filled": false-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json",         "format": {             "feature": "line",             "type": "topojson"-        }+        },+        "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json"     },-    "width": 700,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "id",             "type": "nominal"         }-    }+    },+    "height": 500,+    "mark": {+        "filled": false,+        "type": "geoshape"+    },+    "width": 700 }
tests/specs/geo/linear2.vl view
@@ -1,27 +1,24 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "mark": {-        "strokeWidth": 2,-        "type": "geoshape",-        "filled": false-    },     "data": {-        "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json",         "format": {             "feature": "line",             "type": "topojson"-        }+        },+        "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json"     },-    "width": 700,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {             "field": "id",+            "legend": {+                "orient": "bottom-right",+                "title": null+            },             "scale": {                 "domain": [                     "Bakerloo",@@ -52,11 +49,14 @@                     "rgb(106,187,170)"                 ]             },-            "type": "nominal",-            "legend": {-                "orient": "bottom-right",-                "title": null-            }+            "type": "nominal"         }-    }+    },+    "height": 500,+    "mark": {+        "filled": false,+        "strokeWidth": 2,+        "type": "geoshape"+    },+    "width": 700 }
tests/specs/geo/linear3.vl view
@@ -1,80 +1,79 @@ {-    "height": 500,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "stroke": null         }     },-    "width": 700,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "height": 500,     "layer": [         {-            "mark": {-                "strokeWidth": 2,-                "stroke": "rgb(251,247,238)",-                "type": "geoshape"-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json",                 "format": {                     "feature": "boroughs",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/londonBoroughs.json"             },             "encoding": {                 "color": {                     "value": "#ddc"                 }+            },+            "mark": {+                "stroke": "rgb(251,247,238)",+                "strokeWidth": 2,+                "type": "geoshape"             }         },         {-            "transform": [-                {-                    "as": "bLabel",-                    "calculate": "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"-                }-            ],-            "mark": "text",             "data": {                 "url": "https://vega.github.io/vega-lite/data/londonCentroids.json"             },             "encoding": {-                "size": {-                    "value": 8-                },-                "text": {-                    "field": "bLabel",-                    "type": "nominal"-                },                 "latitude": {                     "field": "cy",                     "type": "quantitative"                 },-                "opacity": {-                    "value": 0.6-                },                 "longitude": {                     "field": "cx",                     "type": "quantitative"+                },+                "opacity": {+                    "value": 0.6+                },+                "size": {+                    "value": 8+                },+                "text": {+                    "field": "bLabel",+                    "type": "nominal"                 }-            }+            },+            "mark": "text",+            "transform": [+                {+                    "as": "bLabel",+                    "calculate": "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"+                }+            ]         },         {-            "mark": {-                "strokeWidth": 2,-                "type": "geoshape",-                "filled": false-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json",                 "format": {                     "feature": "line",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/londonTubeLines.json"             },             "encoding": {                 "color": {                     "field": "id",+                    "legend": {+                        "offset": 0,+                        "orient": "bottom-right",+                        "title": null+                    },                     "scale": {                         "domain": [                             "Bakerloo",@@ -105,14 +104,15 @@                             "rgb(106,187,170)"                         ]                     },-                    "type": "nominal",-                    "legend": {-                        "offset": 0,-                        "orient": "bottom-right",-                        "title": null-                    }+                    "type": "nominal"                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 2,+                "type": "geoshape"             }         }-    ]+    ],+    "width": 700 }
tests/specs/geo/map1d.vl view
@@ -1,24 +1,22 @@ {-    "height": 400,-    "width": 500,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "height": 400,     "layer": [         {-            "mark": {-                "stroke": "white",-                "fill": "lightgrey",-                "type": "geoshape"-            },             "data": {-                "url": "https://gicentre.github.io/data/geoTutorials/londonBoroughs.json",                 "format": {                     "feature": "boroughs",                     "type": "topojson"-                }+                },+                "url": "https://gicentre.github.io/data/geoTutorials/londonBoroughs.json"+            },+            "mark": {+                "fill": "lightgrey",+                "stroke": "white",+                "type": "geoshape"             }         },         {-            "mark": "circle",             "data": {                 "url": "https://gicentre.github.io/data/geoTutorials/londonCentroids.csv"             },@@ -31,10 +29,10 @@                     "field": "cx",                     "type": "quantitative"                 }-            }+            },+            "mark": "circle"         },         {-            "mark": "circle",             "data": {                 "url": "https://gicentre.github.io/data/geoTutorials/londonCentroids.csv"             },@@ -46,10 +44,10 @@                     "field": "cx",                     "type": "quantitative"                 }-            }+            },+            "mark": "circle"         },         {-            "mark": "circle",             "data": {                 "url": "https://gicentre.github.io/data/geoTutorials/londonCentroids.csv"             },@@ -61,7 +59,9 @@                 "longitude": {                     "value": -0.52                 }-            }+            },+            "mark": "circle"         }-    ]+    ],+    "width": 500 }
tests/specs/geo/mapComp1.vl view
@@ -1,59 +1,59 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "hconcat": [         {-            "height": 300,-            "mark": {-                "type": "geoshape",-                "filled": false-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/graticule.json",                 "format": {                     "feature": "graticule",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/graticule.json"             },-            "width": 300,+            "height": 300,+            "mark": {+                "filled": false,+                "type": "geoshape"+            },             "projection": {                 "type": "orthographic"-            }+            },+            "width": 300         },         {-            "height": 300,-            "mark": {-                "type": "geoshape",-                "filled": false-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/graticule.json",                 "format": {                     "feature": "graticule",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/graticule.json"             },-            "width": 300,+            "height": 300,+            "mark": {+                "filled": false,+                "type": "geoshape"+            },             "projection": {                 "type": "orthographic"-            }+            },+            "width": 300         },         {-            "height": 300,-            "mark": {-                "type": "geoshape",-                "filled": false-            },             "data": {-                "url": "https://vega.github.io/vega-lite/data/graticule.json",                 "format": {                     "feature": "graticule",                     "type": "topojson"-                }+                },+                "url": "https://vega.github.io/vega-lite/data/graticule.json"             },-            "width": 300,+            "height": 300,+            "mark": {+                "filled": false,+                "type": "geoshape"+            },             "projection": {                 "type": "orthographic"-            }+            },+            "width": 300         }-    ],-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/geo/mapComp2.vl view
@@ -1,124 +1,124 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "view": {+            "stroke": null+        }+    },     "hconcat": [         {             "height": 300,-            "width": 300,-            "projection": {-                "type": "orthographic"-            },             "layer": [                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"+                    },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"                     }                 },                 {-                    "mark": {-                        "fill": "black",-                        "type": "geoshape",-                        "fillOpacity": 0.7-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "land",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"+                    },+                    "mark": {+                        "fill": "black",+                        "fillOpacity": 0.7,+                        "type": "geoshape"                     }                 }-            ]-        },-        {-            "height": 300,-            "width": 300,+            ],             "projection": {                 "type": "orthographic"             },+            "width": 300+        },+        {+            "height": 300,             "layer": [                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"+                    },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"                     }                 },                 {-                    "mark": {-                        "fill": "black",-                        "type": "geoshape",-                        "fillOpacity": 0.7-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "land",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"+                    },+                    "mark": {+                        "fill": "black",+                        "fillOpacity": 0.7,+                        "type": "geoshape"                     }                 }-            ]-        },-        {-            "height": 300,-            "width": 300,+            ],             "projection": {                 "type": "orthographic"             },+            "width": 300+        },+        {+            "height": 300,             "layer": [                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"+                    },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"                     }                 },                 {-                    "mark": {-                        "fill": "black",-                        "type": "geoshape",-                        "fillOpacity": 0.7-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "land",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"+                    },+                    "mark": {+                        "fill": "black",+                        "fillOpacity": 0.7,+                        "type": "geoshape"                     }                 }-            ]-        }-    ],-    "config": {-        "view": {-            "stroke": null+            ],+            "projection": {+                "type": "orthographic"+            },+            "width": 300         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/geo/mapComp3.vl view
@@ -1,166 +1,166 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "view": {+            "stroke": null+        }+    },     "hconcat": [         {             "height": 300,-            "width": 300,             "layer": [                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"                     },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             -65,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.5,-                        "stroke": "white",-                        "fill": "black",-                        "type": "geoshape"-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "countries",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"                     },+                    "mark": {+                        "fill": "black",+                        "stroke": "white",+                        "strokeWidth": 0.5,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             -65,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 }-            ]+            ],+            "width": 300         },         {             "height": 300,-            "width": 300,             "layer": [                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"                     },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             115,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.5,-                        "stroke": "white",-                        "fill": "black",-                        "type": "geoshape"-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "countries",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"                     },+                    "mark": {+                        "fill": "black",+                        "stroke": "white",+                        "strokeWidth": 0.5,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             115,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 }-            ]+            ],+            "width": 300         },         {             "height": 300,-            "width": 300,             "layer": [                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"                     },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             10,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.5,-                        "stroke": "white",-                        "fill": "black",-                        "type": "geoshape"-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "countries",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"                     },+                    "mark": {+                        "fill": "black",+                        "stroke": "white",+                        "strokeWidth": 0.5,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             10,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 }-            ]-        }-    ],-    "config": {-        "view": {-            "stroke": null+            ],+            "width": 300         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/geo/mapComp4.vl view
@@ -1,158 +1,158 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "config": {+        "view": {+            "stroke": null+        }+    },     "hconcat": [         {             "height": 300,-            "width": 300,             "layer": [                 {-                    "mark": {-                        "fill": "#c1e7f5",-                        "strokeOpacity": 0,-                        "type": "geoshape"-                    },                     "data": {-                        "url": "data/globe.json",                         "format": {                             "feature": "globe",                             "type": "topojson"-                        }+                        },+                        "url": "data/globe.json"                     },+                    "mark": {+                        "fill": "#c1e7f5",+                        "strokeOpacity": 0,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             0,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"                     },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             0,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "white",-                        "fill": "#242",-                        "type": "geoshape"-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "countries",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"                     },+                    "mark": {+                        "fill": "#242",+                        "stroke": "white",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             0,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 }-            ]+            ],+            "width": 300         },         {             "height": 300,-            "width": 300,             "layer": [                 {-                    "mark": {-                        "fill": "#c1e7f5",-                        "strokeOpacity": 0,-                        "type": "geoshape"-                    },                     "data": {-                        "url": "data/globe.json",                         "format": {                             "feature": "globe",                             "type": "topojson"-                        }+                        },+                        "url": "data/globe.json"                     },+                    "mark": {+                        "fill": "#c1e7f5",+                        "strokeOpacity": 0,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             0,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "#411",-                        "type": "geoshape",-                        "filled": false-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/graticule.json",                         "format": {                             "feature": "graticule",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/graticule.json"                     },+                    "mark": {+                        "filled": false,+                        "stroke": "#411",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             -40,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 },                 {-                    "mark": {-                        "strokeWidth": 0.1,-                        "stroke": "white",-                        "fill": "#242",-                        "type": "geoshape"-                    },                     "data": {-                        "url": "https://vega.github.io/vega-lite/data/world-110m.json",                         "format": {                             "feature": "countries",                             "type": "topojson"-                        }+                        },+                        "url": "https://vega.github.io/vega-lite/data/world-110m.json"                     },+                    "mark": {+                        "fill": "#242",+                        "stroke": "white",+                        "strokeWidth": 0.1,+                        "type": "geoshape"+                    },                     "projection": {-                        "type": "orthographic",                         "rotate": [                             -40,                             0,                             0-                        ]+                        ],+                        "type": "orthographic"                     }                 }-            ]-        }-    ],-    "config": {-        "view": {-            "stroke": null+            ],+            "width": 300         }-    },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json"+    ] }
tests/specs/geo/scale1.vl view
@@ -1,31 +1,21 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "scale": 470,-        "type": "orthographic"-    },+    "height": 300,     "layer": [         {-            "mark": {-                "fill": "rgb(149,181,146)",-                "type": "geoshape"-            },             "data": {-                "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json",                 "format": {                     "feature": "countries1",                     "type": "topojson"-                }+                },+                "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json"+            },+            "mark": {+                "fill": "rgb(149,181,146)",+                "type": "geoshape"             }         },         {-            "mark": {-                "strokeWidth": 0.3,-                "type": "geoshape",-                "filled": false-            },             "data": {                 "graticule": {                     "stepMinor": [@@ -33,7 +23,17 @@                         5                     ]                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 0.3,+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "scale": 470,+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/geo/scribbleMap1.vl view
@@ -1,42 +1,26 @@ {-    "transform": [-        {-            "filter": "datum.latitude != '' && datum.county != 'Honolulu' && datum.state !='AS'&& datum.state !='FM'&& datum.state !='PW'&& datum.state !='MH'&& datum.state !='GU'&& datum.state !='MP'&& datum.state !='VI'&& datum.state !='PR'"-        },-        {-            "as": "conterminous",-            "calculate": "datum.state == 'HI' ? 'hi' : (datum.state == 'AK' ? 'ak' : 'continent')"-        }-    ],-    "height": 600,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "view": {-            "stroke": null-        },         "title": {-            "fontSize": 28,             "font": "Roboto",+            "fontSize": 28,             "fontWeight": 300+        },+        "view": {+            "stroke": null         }     },-    "mark": {-        "strokeWidth": 0.2,-        "interpolate": "monotone",-        "type": "line"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/zipcodes.csv"     },-    "width": 1000,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },-    "title": "US connected zip codes",     "encoding": {         "color": {             "value": "#666"         },+        "detail": {+            "field": "conterminous",+            "type": "nominal"+        },         "latitude": {             "field": "latitude",             "type": "quantitative"@@ -48,10 +32,26 @@         "order": {             "field": "zip_code",             "type": "quantitative"+        }+    },+    "height": 600,+    "mark": {+        "interpolate": "monotone",+        "strokeWidth": 0.2,+        "type": "line"+    },+    "projection": {+        "type": "albersUsa"+    },+    "title": "US connected zip codes",+    "transform": [+        {+            "filter": "datum.latitude != '' && datum.county != 'Honolulu' && datum.state !='AS'&& datum.state !='FM'&& datum.state !='PW'&& datum.state !='MH'&& datum.state !='GU'&& datum.state !='MP'&& datum.state !='VI'&& datum.state !='PR'"         },-        "detail": {-            "field": "conterminous",-            "type": "nominal"+        {+            "as": "conterminous",+            "calculate": "datum.state == 'HI' ? 'hi' : (datum.state == 'AK' ? 'ak' : 'continent')"         }-    }+    ],+    "width": 1000 }
tests/specs/geo/scribbleMap2.vl view
@@ -1,48 +1,28 @@ {-    "transform": [-        {-            "filter": "datum.latitude != '' && datum.county != 'Honolulu' && datum.state !='AS'&& datum.state !='FM'&& datum.state !='PW'&& datum.state !='MH'&& datum.state !='GU'&& datum.state !='MP'&& datum.state !='VI'&& datum.state !='PR'"-        },-        {-            "as": "digit3",-            "calculate": "substring(datum.zip_code, 0, 3)"-        },-        {-            "as": "ziplen",-            "calculate": "length(datum.zip_code+' ')"-        }-    ],-    "height": 600,+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {-        "view": {-            "stroke": null-        },         "title": {-            "fontSize": 28,             "font": "Roboto",+            "fontSize": 28,             "fontWeight": 300+        },+        "view": {+            "stroke": null         }     },-    "mark": {-        "strokeWidth": 0.2,-        "interpolate": "monotone",-        "type": "line"-    },     "data": {         "url": "https://vega.github.io/vega-lite/data/zipcodes.csv"     },-    "width": 1000,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "albersUsa"-    },-    "title": "US connected zip codes, coloured by first three digits",     "encoding": {         "color": {             "field": "digit3",-            "type": "nominal",-            "legend": null+            "legend": null,+            "type": "nominal"         },+        "detail": {+            "field": "ziplen",+            "type": "nominal"+        },         "latitude": {             "field": "latitude",             "type": "quantitative"@@ -54,10 +34,30 @@         "order": {             "field": "zip_code",             "type": "quantitative"+        }+    },+    "height": 600,+    "mark": {+        "interpolate": "monotone",+        "strokeWidth": 0.2,+        "type": "line"+    },+    "projection": {+        "type": "albersUsa"+    },+    "title": "US connected zip codes, coloured by first three digits",+    "transform": [+        {+            "filter": "datum.latitude != '' && datum.county != 'Honolulu' && datum.state !='AS'&& datum.state !='FM'&& datum.state !='PW'&& datum.state !='MH'&& datum.state !='GU'&& datum.state !='MP'&& datum.state !='VI'&& datum.state !='PR'"         },-        "detail": {-            "field": "ziplen",-            "type": "nominal"+        {+            "as": "digit3",+            "calculate": "substring(datum.zip_code, 0, 3)"+        },+        {+            "as": "ziplen",+            "calculate": "length(datum.zip_code+' ')"         }-    }+    ],+    "width": 1000 }
tests/specs/geo/sphere1.vl view
@@ -1,19 +1,19 @@ {-    "height": 300,-    "mark": {-        "fill": "rgb(149,181,146)",-        "type": "geoshape"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {-        "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json",         "format": {             "feature": "countries1",             "type": "topojson"-        }+        },+        "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json"     },-    "width": 300,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "height": 300,+    "mark": {+        "fill": "rgb(149,181,146)",+        "type": "geoshape"+    },     "projection": {         "type": "orthographic"-    }+    },+    "width": 300 }
tests/specs/geo/sphere2.vl view
@@ -1,32 +1,32 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic"-    },+    "height": 300,     "layer": [         {+            "data": {+                "sphere": true+            },             "mark": {                 "fill": "aliceblue",                 "type": "geoshape"-            },-            "data": {-                "sphere": true             }         },         {-            "mark": {-                "fill": "rgb(149,181,146)",-                "type": "geoshape"-            },             "data": {-                "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json",                 "format": {                     "feature": "countries1",                     "type": "topojson"-                }+                },+                "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json"+            },+            "mark": {+                "fill": "rgb(149,181,146)",+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/geo/translate1.vl view
@@ -1,34 +1,21 @@ {-    "height": 300,-    "width": 300,     "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "projection": {-        "type": "orthographic",-        "translate": [-            0,-            100-        ]-    },+    "height": 300,     "layer": [         {-            "mark": {-                "fill": "rgb(149,181,146)",-                "type": "geoshape"-            },             "data": {-                "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json",                 "format": {                     "feature": "countries1",                     "type": "topojson"-                }+                },+                "url": "https://gicentre.github.io/data/geoTutorials/world-110m.json"+            },+            "mark": {+                "fill": "rgb(149,181,146)",+                "type": "geoshape"             }         },         {-            "mark": {-                "strokeWidth": 0.3,-                "type": "geoshape",-                "filled": false-            },             "data": {                 "graticule": {                     "stepMinor": [@@ -36,7 +23,20 @@                         5                     ]                 }+            },+            "mark": {+                "filled": false,+                "strokeWidth": 0.3,+                "type": "geoshape"             }         }-    ]+    ],+    "projection": {+        "translate": [+            0,+            100+        ],+        "type": "orthographic"+    },+    "width": 300 }
tests/specs/hyperlink/hyperlink1.vl view
@@ -1,45 +1,44 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {-                "url": "https://vega.github.io/vega",-                "label": "Vega"+                "label": "Vega",+                "url": "https://vega.github.io/vega"             },             {-                "url": "https://vega.github.io/vega-lite",-                "label": "Vega-Lite"+                "label": "Vega-Lite",+                "url": "https://vega.github.io/vega-lite"             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "cursor": "pointer",-                "type": "circle"-            },             "encoding": {                 "color": {                     "field": "label",-                    "type": "nominal",-                    "legend": null-                },-                "size": {-                    "value": 8000+                    "legend": null,+                    "type": "nominal"                 },                 "href": {                     "field": "url",                     "type": "nominal"                 },+                "size": {+                    "value": 8000+                },                 "x": {+                    "axis": null,                     "field": "label",-                    "type": "nominal",-                    "axis": null+                    "type": "nominal"                 }+            },+            "mark": {+                "cursor": "pointer",+                "type": "circle"             }         },         {-            "mark": "text",             "encoding": {                 "color": {                     "value": "white"@@ -52,11 +51,12 @@                     "type": "nominal"                 },                 "x": {+                    "axis": null,                     "field": "label",-                    "type": "nominal",-                    "axis": null+                    "type": "nominal"                 }-            }+            },+            "mark": "text"         }     ] }
tests/specs/hyperlink/hyperlink2.vl view
@@ -1,12 +1,8 @@ {-    "mark": {-        "cursor": "pointer",-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "href": {             "value": "http://www.imdb.com"@@ -19,5 +15,9 @@             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }+    },+    "mark": {+        "cursor": "pointer",+        "type": "point"     } }
tests/specs/hyperlink/hyperlink3.vl view
@@ -1,26 +1,22 @@ {-    "mark": {-        "cursor": "pointer",-        "type": "point"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://vega.github.io/vega-lite/data/movies.json"     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "color": {-            "value": "red",             "condition": {-                "value": "steelblue",-                "test": "datum.IMDB_Rating*10 > datum.Rotten_Tomatoes_Rating"-            }+                "test": "datum.IMDB_Rating*10 > datum.Rotten_Tomatoes_Rating",+                "value": "steelblue"+            },+            "value": "red"         },         "href": {-            "value": "https://www.rottentomatoes.com",             "condition": {-                "value": "http://www.imdb.com",-                "test": "datum.IMDB_Rating*10 > datum.Rotten_Tomatoes_Rating"-            }+                "test": "datum.IMDB_Rating*10 > datum.Rotten_Tomatoes_Rating",+                "value": "http://www.imdb.com"+            },+            "value": "https://www.rottentomatoes.com"         },         "x": {             "field": "IMDB_Rating",@@ -30,5 +26,9 @@             "field": "Rotten_Tomatoes_Rating",             "type": "quantitative"         }+    },+    "mark": {+        "cursor": "pointer",+        "type": "point"     } }
tests/specs/image/image1.vl view
@@ -1,9 +1,5 @@ {-    "mark": {-        "height": 25,-        "width": 25,-        "type": "image"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -20,7 +16,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "url": {             "value": "https://vega.github.io/vega-lite/data/ffox.png"@@ -33,5 +28,10 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "height": 25,+        "type": "image",+        "width": 25     } }
tests/specs/image/image10.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 61,-                "width": 100,-                "type": "image",-                "baseline": "bottom"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "baseline": "bottom",+                "height": 61,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image2.vl view
@@ -1,9 +1,5 @@ {-    "mark": {-        "height": 25,-        "width": 25,-        "type": "image"-    },+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -23,7 +19,6 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "encoding": {         "url": {             "field": "img",@@ -37,5 +32,10 @@             "field": "y",             "type": "quantitative"         }+    },+    "mark": {+        "height": 25,+        "type": "image",+        "width": 25     } }
tests/specs/image/image3.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,14 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "aspect": true,-                "width": 100,-                "type": "image"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -39,15 +34,14 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "aspect": true,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -69,6 +63,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image4.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 100,-                "aspect": false,-                "width": 100,-                "type": "image"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "aspect": false,+                "height": 100,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image5.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 61,-                "width": 100,-                "align": "left",-                "type": "image"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "align": "left",+                "height": 61,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image6.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 61,-                "width": 100,-                "align": "center",-                "type": "image"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "align": "center",+                "height": 61,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image7.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 61,-                "width": 100,-                "align": "right",-                "type": "image"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "align": "right",+                "height": 61,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image8.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 61,-                "width": 100,-                "type": "image",-                "baseline": "top"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "baseline": "top",+                "height": 61,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/image/image9.vl view
@@ -1,4 +1,5 @@ {+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "values": [             {@@ -7,15 +8,8 @@             }         ]     },-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "layer": [         {-            "mark": {-                "height": 61,-                "width": 100,-                "type": "image",-                "baseline": "middle"-            },             "encoding": {                 "url": {                     "value": "https://gicentre.github.io/data/images/LillyTarn.jpg"@@ -40,15 +34,15 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "baseline": "middle",+                "height": 61,+                "type": "image",+                "width": 100             }         },         {-            "mark": {-                "color": "red",-                "size": 100,-                "opacity": 0.5,-                "type": "circle"-            },             "encoding": {                 "x": {                     "field": "x",@@ -70,6 +64,12 @@                     },                     "type": "quantitative"                 }+            },+            "mark": {+                "color": "red",+                "opacity": 0.5,+                "size": 100,+                "type": "circle"             }         }     ]
tests/specs/interaction/bindlegend.vl view
@@ -1,22 +1,10 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://gicentre.github.io/data/westMidlands/westMidsCrimesAggregated.tsv"     },-    "width": 540,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "mySelection": {-            "bind": "legend",-            "type": "single",-            "fields": [-                "crimeType"-            ]-        }-    },     "encoding": {         "color": {-            "value": "black",             "condition": {                 "field": "crimeType",                 "scale": {@@ -39,14 +27,15 @@                 },                 "selection": "mySelection",                 "type": "nominal"-            }+            },+            "value": "black"         },         "opacity": {-            "value": 0.1,             "condition": {-                "value": 1,-                "selection": "mySelection"-            }+                "selection": "mySelection",+                "value": 1+            },+            "value": 0.1         },         "x": {             "field": "month",@@ -58,5 +47,16 @@             "title": "Reported crimes",             "type": "quantitative"         }-    }+    },+    "mark": "circle",+    "selection": {+        "mySelection": {+            "bind": "legend",+            "fields": [+                "crimeType"+            ],+            "type": "single"+        }+    },+    "width": 540 }
tests/specs/interaction/bindlegend2.vl view
@@ -1,24 +1,10 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://gicentre.github.io/data/westMidlands/westMidsCrimesAggregated.tsv"     },-    "width": 540,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "mySelection": {-            "bind": {-                "legend": "dblclick"-            },-            "encodings": [-                "color"-            ],-            "type": "single"-        }-    },     "encoding": {         "color": {-            "value": "black",             "condition": {                 "field": "crimeType",                 "scale": {@@ -41,14 +27,15 @@                 },                 "selection": "mySelection",                 "type": "nominal"-            }+            },+            "value": "black"         },         "opacity": {-            "value": 0.1,             "condition": {-                "value": 1,-                "selection": "mySelection"-            }+                "selection": "mySelection",+                "value": 1+            },+            "value": 0.1         },         "x": {             "field": "month",@@ -60,5 +47,18 @@             "title": "Reported crimes",             "type": "quantitative"         }-    }+    },+    "mark": "circle",+    "selection": {+        "mySelection": {+            "bind": {+                "legend": "dblclick"+            },+            "encodings": [+                "color"+            ],+            "type": "single"+        }+    },+    "width": 540 }
tests/specs/interaction/bindlegendboth.vl view
@@ -1,25 +1,10 @@ {-    "mark": "circle",+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "data": {         "url": "https://gicentre.github.io/data/westMidlands/westMidsCrimesAggregated.tsv"     },-    "width": 540,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",-    "selection": {-        "mySelection": {-            "bind": {-                "legend": "dblclick"-            },-            "type": "multi",-            "on": "click",-            "fields": [-                "crimeType"-            ]-        }-    },     "encoding": {         "color": {-            "value": "black",             "condition": {                 "field": "crimeType",                 "scale": {@@ -42,14 +27,15 @@                 },                 "selection": "mySelection",                 "type": "nominal"-            }+            },+            "value": "black"         },         "opacity": {-            "value": 0.1,             "condition": {-                "value": 1,-                "selection": "mySelection"-            }+                "selection": "mySelection",+                "value": 1+            },+            "value": 0.1         },         "x": {             "field": "month",@@ -61,5 +47,19 @@             "title": "Reported crimes",             "type": "quantitative"         }-    }+    },+    "mark": "circle",+    "selection": {+        "mySelection": {+            "bind": {+                "legend": "dblclick"+            },+            "fields": [+                "crimeType"+            ],+            "on": "click",+            "type": "multi"+        }+    },+    "width": 540 }
tests/specs/interaction/curhelp.vl view
@@ -1,45 +1,45 @@ {-    "transform": [-        {-            "filter": "datum.symbol==='GOOG'"-        }-    ],+    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",     "config": {         "view": {             "cursor": "text"         }     },-    "mark": "line",     "data": {-        "url": "https://vega.github.io/vega-lite/data/stocks.csv",         "format": {             "parse": {                 "date": "date"             },             "type": "csv"+        },+        "url": "https://vega.github.io/vega-lite/data/stocks.csv"+    },+    "encoding": {+        "x": {+            "field": "date",+            "type": "temporal"+        },+        "y": {+            "field": "price",+            "type": "quantitative"         }     },-    "width": 400,-    "$schema": "https://vega.github.io/schema/vega-lite/v4.json",+    "mark": "line",     "selection": {         "myBrush": {-            "mark": {-                "cursor": "help"-            },             "encodings": [                 "x"             ],+            "mark": {+                "cursor": "help"+            },             "type": "interval"         }     },-    "encoding": {-        "x": {-            "field": "date",-            "type": "temporal"-        },-        "y": {-            "field": "price",-            "type": "quantitative"+    "transform": [+        {+            "filter": "datum.symbol==='GOOG'"         }-    }+    ],+    "width": 400 }
tests/specs/interaction/curpointer.vl view

file too large to diff

tests/specs/interaction/initinterval.vl view

file too large to diff

tests/specs/interaction/initintervalx.vl view

file too large to diff

tests/specs/interaction/initintervalxy.vl view

file too large to diff

tests/specs/interaction/initintervaly.vl view

file too large to diff

tests/specs/interaction/interaction1.vl view

file too large to diff

tests/specs/interaction/interaction2.vl view

file too large to diff

tests/specs/interaction/interaction3.vl view

file too large to diff

tests/specs/interaction/interaction4.vl view

file too large to diff

tests/specs/interaction/interaction5.vl view

file too large to diff

tests/specs/interaction/interaction6.vl view

file too large to diff

tests/specs/interaction/interaction7.vl view

file too large to diff

tests/specs/interaction/interaction8.vl view

file too large to diff

tests/specs/interaction/lookupSelection1.vl view

file too large to diff

tests/specs/legend/corners1.vl view

file too large to diff

tests/specs/legend/corners2.vl view

file too large to diff

tests/specs/legend/disablelegend.vl view

file too large to diff

tests/specs/legend/legend1.vl view

file too large to diff

tests/specs/legend/legend10.vl view

file too large to diff

tests/specs/legend/legend11.vl view

file too large to diff

tests/specs/legend/legend11d.vl view

file too large to diff

tests/specs/legend/legend2.vl view

file too large to diff

tests/specs/legend/legend3.vl view

file too large to diff

tests/specs/legend/legend4.vl view

file too large to diff

tests/specs/legend/legend5.vl view

file too large to diff

tests/specs/legend/legend6.vl view

file too large to diff

tests/specs/legend/legend7.vl view

file too large to diff

tests/specs/legend/legend8.vl view

file too large to diff

tests/specs/legend/legend9.vl view

file too large to diff

tests/specs/legend/limits1.vl view

file too large to diff

tests/specs/legend/limits2.vl view

file too large to diff

tests/specs/legend/limits3.vl view

file too large to diff

tests/specs/null/axis1.vl view

file too large to diff

tests/specs/null/filter1.vl view

file too large to diff

tests/specs/null/filter2.vl view

file too large to diff

tests/specs/null/scale0.vl view

file too large to diff

tests/specs/null/scale1.vl view

file too large to diff

tests/specs/null/scale2.vl view

file too large to diff

tests/specs/null/scale3.vl view

file too large to diff

tests/specs/null/scale4.vl view

file too large to diff

tests/specs/null/scale5.vl view

file too large to diff

tests/specs/position/position1.vl view

file too large to diff

tests/specs/position/position10.vl view

file too large to diff

tests/specs/position/position10r.vl view

file too large to diff

tests/specs/position/position11.vl view

file too large to diff

tests/specs/position/position11r.vl view

file too large to diff

tests/specs/position/position12.vl view

file too large to diff

tests/specs/position/position12r.vl view

file too large to diff

tests/specs/position/position2.vl view

file too large to diff

tests/specs/position/position3.vl view

file too large to diff

tests/specs/position/position4.vl view

file too large to diff

tests/specs/position/position5.vl view

file too large to diff

tests/specs/position/position6.vl view

file too large to diff

tests/specs/position/position7.vl view

file too large to diff

tests/specs/position/position8.vl view

file too large to diff

tests/specs/position/position8r.vl view

file too large to diff

tests/specs/position/position9.vl view

file too large to diff

tests/specs/position/position9r.vl view

file too large to diff

tests/specs/projection/Albers.vl view

file too large to diff

tests/specs/projection/AzimuthalEqualArea.vl view

file too large to diff

tests/specs/projection/AzimuthalEquidistant.vl view

file too large to diff

tests/specs/projection/ConicConformal.vl view

file too large to diff

tests/specs/projection/ConicEqualArea.vl view

file too large to diff

tests/specs/projection/ConicEquidistant.vl view

file too large to diff

tests/specs/projection/EqualEarth.vl view

file too large to diff

tests/specs/projection/Equirectangular.vl view

file too large to diff

tests/specs/projection/Gnomonic.vl view

file too large to diff

tests/specs/projection/Identity.vl view

file too large to diff

tests/specs/projection/Mercator.vl view

file too large to diff

tests/specs/projection/NaturalEarth1.vl view

file too large to diff

tests/specs/projection/Orthographic.vl view

file too large to diff

tests/specs/projection/Stereographic.vl view

file too large to diff

tests/specs/projection/TransverseMercator.vl view

file too large to diff

tests/specs/projection/airy.vl view

file too large to diff

tests/specs/projection/aitoff.vl view

file too large to diff

tests/specs/projection/armadillo.vl view

file too large to diff

tests/specs/projection/august.vl view

file too large to diff

tests/specs/projection/baker.vl view

file too large to diff

tests/specs/projection/berghaus.vl view

file too large to diff

tests/specs/projection/bertin1953.vl view

file too large to diff

tests/specs/projection/boggs.vl view

file too large to diff

tests/specs/projection/bonne.vl view

file too large to diff

tests/specs/projection/bottomley.vl view

file too large to diff

tests/specs/projection/collignon.vl view

file too large to diff

tests/specs/projection/configExample.vl view

file too large to diff

tests/specs/projection/craig.vl view

file too large to diff

tests/specs/projection/craster.vl view

file too large to diff

tests/specs/projection/cylindricalequalarea.vl view

file too large to diff

tests/specs/projection/cylindricalstereographic.vl view

file too large to diff

tests/specs/projection/eckert1.vl view

file too large to diff

tests/specs/projection/eckert2.vl view

file too large to diff

tests/specs/projection/eckert3.vl view

file too large to diff

tests/specs/projection/eckert4.vl view

file too large to diff

tests/specs/projection/eckert5.vl view

file too large to diff

tests/specs/projection/eckert6.vl view

file too large to diff

tests/specs/projection/eisenlohr.vl view

file too large to diff

tests/specs/projection/fahey.vl view

file too large to diff

tests/specs/projection/foucaut.vl view

file too large to diff

tests/specs/projection/gingery.vl view

file too large to diff

tests/specs/projection/identityExample.vl view

file too large to diff

tests/specs/projection/reflectXExample.vl view

file too large to diff

tests/specs/projection/reflectXYExample.vl view

file too large to diff

tests/specs/projection/reflectYExample.vl view

file too large to diff

tests/specs/projection/winkel3.vl view

file too large to diff

tests/specs/scale/axislimit.vl view

file too large to diff

tests/specs/scale/axisrange.vl view

file too large to diff

tests/specs/scale/diverging1.vl view

file too large to diff

tests/specs/scale/diverging2.vl view

file too large to diff

tests/specs/scale/namedaxisrange.vl view

file too large to diff

tests/specs/scale/scale1.vl view

file too large to diff

tests/specs/scale/scale2.vl view

file too large to diff

tests/specs/scale/scale3.vl view

file too large to diff

tests/specs/scale/scale4.vl view

file too large to diff

tests/specs/scale/scale5.vl view

file too large to diff

tests/specs/scale/scale6.vl view

file too large to diff

tests/specs/scale/scale7.vl view

file too large to diff

tests/specs/scale/scale8.vl view

file too large to diff

tests/specs/scale/scale9.vl view

file too large to diff

tests/specs/shape/custom1.vl view

file too large to diff

tests/specs/shape/custom2.vl view

file too large to diff

tests/specs/shape/custom3.vl view

file too large to diff

tests/specs/shape/custom4.vl view

file too large to diff

tests/specs/shape/defNominal.vl view

file too large to diff

tests/specs/shape/defOrdinal.vl view

file too large to diff

tests/specs/shape/isotype1.vl view

file too large to diff

tests/specs/shape/multi1.vl view

file too large to diff

tests/specs/shape/multi2.vl view

file too large to diff

tests/specs/shape/multi3.vl view

file too large to diff

tests/specs/shape/multi4.vl view

file too large to diff

tests/specs/shape/multi5.vl view

file too large to diff

tests/specs/shape/multi6.vl view

file too large to diff

tests/specs/shape/point1.vl view

file too large to diff

tests/specs/shape/point2.vl view

file too large to diff

tests/specs/shape/point3.vl view

file too large to diff

tests/specs/shape/point4.vl view

file too large to diff

tests/specs/shape/point5.vl view

file too large to diff

tests/specs/shape/point6.vl view

file too large to diff

tests/specs/shape/point7.vl view

file too large to diff

tests/specs/shape/rounded1.vl view

file too large to diff

tests/specs/shape/rounded2.vl view

file too large to diff

tests/specs/shape/rounded3.vl view

file too large to diff

tests/specs/shape/rounded4.vl view

file too large to diff

tests/specs/shape/rounded5.vl view

file too large to diff

tests/specs/shape/rounded6.vl view

file too large to diff

tests/specs/shape/size1.vl view

file too large to diff

tests/specs/shape/size2.vl view

file too large to diff

tests/specs/shape/size3.vl view

file too large to diff

tests/specs/shape/symbols1.vl view

file too large to diff

tests/specs/shape/symbols2.vl view

file too large to diff

tests/specs/shape/windvector.vl view

file too large to diff

tests/specs/sort/ascending.vl view

file too large to diff

tests/specs/sort/custom.vl view

file too large to diff

tests/specs/sort/descending.vl view

file too large to diff

tests/specs/sort/stack1.vl view

file too large to diff

tests/specs/sort/weighted.vl view

file too large to diff

tests/specs/textformat/textFormat1.vl view

file too large to diff

tests/specs/textformat/textFormat2.vl view

file too large to diff

tests/specs/textformat/tstring.vl view

file too large to diff

tests/specs/time/customizeStep.vl view

file too large to diff

tests/specs/time/localTime.vl view

file too large to diff

tests/specs/time/monthAggregate.vl view

file too large to diff

tests/specs/time/nestedTime1.vl view

file too large to diff

tests/specs/time/nestedTime2.vl view

file too large to diff

tests/specs/time/outputAsUTC.vl view

file too large to diff

tests/specs/time/outputScaledAsUTC.vl view

file too large to diff

tests/specs/time/parseAsFormat.vl view

file too large to diff

tests/specs/time/parseAsLocal.vl view

file too large to diff

tests/specs/time/parseAsUTC.vl view

file too large to diff

tests/specs/time/timeBand.vl view

file too large to diff

tests/specs/time/timeDate.vl view

file too large to diff

tests/specs/time/timeDay.vl view

file too large to diff

tests/specs/time/timeHours.vl view

file too large to diff

tests/specs/time/timeHoursMinutes.vl view

file too large to diff

tests/specs/time/timeHoursMinutesSeconds.vl view

file too large to diff

tests/specs/time/timeMinutes.vl view

file too large to diff

tests/specs/time/timeMinutesSeconds.vl view

file too large to diff

tests/specs/time/timeMonth.vl view

file too large to diff

tests/specs/time/timeMonthDate.vl view

file too large to diff

tests/specs/time/timeQuarter.vl view

file too large to diff

tests/specs/time/timeQuarterMonth.vl view

file too large to diff

tests/specs/time/timeUnitTransform.vl view

file too large to diff

tests/specs/time/timeYear.vl view

file too large to diff

tests/specs/time/timeYearMonthDateHours.vl view

file too large to diff

tests/specs/time/timeYearMonthDateHoursMinutes.vl view

file too large to diff

tests/specs/time/timeYearMonthDateHoursMinutesSeconds.vl view

file too large to diff

tests/specs/time/utcTime.vl view

file too large to diff

tests/specs/time/withBar.vl view

file too large to diff

tests/specs/time/withBarOrdinal.vl view

file too large to diff

tests/specs/tooltip/notips.vl view

file too large to diff

tests/specs/tooltip/tooltip1.vl view

file too large to diff

tests/specs/tooltip/tooltip2.vl view

file too large to diff

tests/specs/trail/trail1.vl view

file too large to diff

tests/specs/trail/trail2.vl view

file too large to diff

tests/specs/viewcomposition/columns1.vl view

file too large to diff

tests/specs/viewcomposition/columns2.vl view

file too large to diff

tests/specs/viewcomposition/columns3.vl view

file too large to diff

tests/specs/viewcomposition/columns4.vl view

file too large to diff

tests/specs/viewcomposition/grid1.vl view

file too large to diff

tests/specs/viewcomposition/grid2.vl view

file too large to diff

tests/specs/viewcomposition/grid3.vl view

file too large to diff

tests/specs/viewcomposition/grid4.vl view

file too large to diff

tests/specs/viewcomposition/grid5.vl view

file too large to diff

tests/specs/viewcomposition/groupyage.vl view

file too large to diff

tests/specs/viewcomposition/highlightDateTime.vl view

file too large to diff

tests/specs/viewcomposition/highlightvalue.vl view

file too large to diff

tests/specs/viewcomposition/lorientbottomcnf.vl view

file too large to diff

tests/specs/viewcomposition/lorientbottomhdr.vl view

file too large to diff

tests/specs/viewcomposition/lorientrightcnf.vl view

file too large to diff

tests/specs/viewcomposition/lorientrighthdr.vl view

file too large to diff

tests/specs/viewcomposition/orientbottomcnf.vl view

file too large to diff

tests/specs/viewcomposition/orientbottomhdr.vl view

file too large to diff

tests/specs/viewcomposition/orientrightcnf.vl view

file too large to diff

tests/specs/viewcomposition/orientrighthdr.vl view

file too large to diff

tests/specs/viewcomposition/repeatinglayers.vl view

file too large to diff

tests/specs/viewcomposition/torientbottomcnf.vl view

file too large to diff

tests/specs/viewcomposition/torientbottomhdr.vl view

file too large to diff

tests/specs/viewcomposition/torientrightcnf.vl view

file too large to diff

tests/specs/viewcomposition/torientrighthdr.vl view

file too large to diff

tests/specs/windowtransform/joinAggregate1.vl view

file too large to diff

tests/specs/windowtransform/joinAggregate2.vl view

file too large to diff

tests/specs/windowtransform/joinAggregate3.vl view

file too large to diff

tests/specs/windowtransform/window1.vl view

file too large to diff

tests/specs/windowtransform/window2.vl view

file too large to diff

tests/specs/windowtransform/window3.vl view

file too large to diff

tests/specs/windowtransform/window4.vl view

file too large to diff

tests/specs/windowtransform/window5.vl view

file too large to diff

tests/specs/windowtransform/window6.vl view

file too large to diff

tests/specs/windowtransform/window7.vl view

file too large to diff