Data

Edit this page

Akin to Vega’s data model, the basic data model used by Vega-Lite is tabular data, similar to a spreadsheet or a database table. Individual data sets are assumed to contain a collection of records, which may contain any number of named data fields.

Vega-Lite’s data property describes the visualization’s data source as part of the specification, which can be either inline data (values) or a URL from which to load the data (url). Alternatively, we can create an empty, named data source (name), which can be bound at runtime.

Documentation Overview

Types of Data Sources

Inline Data

Inline Data can be specified using values property. Here is a list of all properties of an inline data source:

Property Type Description
values Number[] | String[] | Boolean[] | Object[] | String

Required. The full data set, included inline. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a data property. Strings are parsed according to the specified format type.

format DataFormat

An object that specifies the format for parsing the data values.

For example, the following specification embeds an inline data table with nine rows and two columns (a and b).

If the input data is simply an array of primitive values, each value is mapped to the data property of a new object. For example [5, 3, 8, 1] is loaded as:

[ {"data": 5}, {"data": 3}, {"data": 8}, {"data": 1} ]

You can also inline a string that will be parsed according to the specified format type.

Data from URL

Data can be loaded from a URL using the url property. In addition, the format of the input data can be specified using the formatType property. By default Vega-Lite will infer the type from the file extension.

Here is a list of all properties describing a data source from URL:

Property Type Description
url String

Required. An URL from which to load the data set. Use the format.type property to ensure the loaded data is correctly parsed.

format DataFormat

An object that specifies the format for parsing the data file.

For example, the following specification loads data from a relative url: data/cars.json. Note that the format type is implicitly "json" by default.

Named Data Sources

Data can also be added at runtime through the Vega View API. Data sources are referenced by name, which is specified in Vega-Lite with name.

Here is a list of all properties describing a named data source:

Property Type Description
name String

Required. Provide a placeholder name and bind data at runtime.

format DataFormat

An object that specifies the format for parsing the data.

For example, to create a data source named myData, use the following data

{
    "name": "myData"
}

Format

The format object describes the data format and additional parsing instructions.

Property Type Description
type String

Type of input data: "json", "csv", "tsv". The default format type is determined by the extension of the file URL. If no extension is detected, "json" will be used by default.

parse String | Object

If set to auto (the default), perform automatic type inference to determine the desired data types. Alternatively, a parsing directive object can be provided for explicit data types. Each property of the object corresponds to a field name, and the value to the desired data type (one of "number", "boolean" or "date"). For example, "parse": {"modified_on": "date"} parses the modified_on field in each input record a Date value.

For "date", we parse data based using Javascript’s Date.parse(). For Specific date formats can be provided (e.g., {foo: 'date:"%m%d%Y"'}), using the d3-time-format syntax. UTC date format parsing is supported similarly (e.g., {foo: 'utc:"%m%d%Y"'}). See more about UTC time

json

Loads a JavaScript Object Notation (JSON) file. Assumes row-oriented data, where each row is an object with named attributes. This is the default file format, and so will be used if no format parameter is provided. If specified, the format parameter should have a type property of "json", and can also accept the following:

Property Type Description
property String

The JSON property containing the desired data. This parameter can be used when the loaded JSON file may have surrounding structure or meta-data. For example "property": "values.features" is equivalent to retrieving json.values.features from the loaded JSON object.

csv

Load a comma-separated values (CSV) file. This format type does not support any additional properties.

tsv

Load a tab-separated values (TSV) file. This format type does not support any additional properties.

topojson

Load a JavaScript Object Notation (JSON) file using the TopoJSON format. The input file must contain valid TopoJSON data. The TopoJSON input is then converted into a GeoJSON format. There are two mutually exclusive properties that can be used to specify the conversion process:

Property Type Description
feature String

The name of the TopoJSON object set to convert to a GeoJSON feature collection. For example, in a map of the world, there may be an object set named "countries". Using the feature property, we can extract this set and generate a GeoJSON feature object for each country.

mesh String

The name of the TopoJSON object set to convert to mesh. Similar to the feature option, mesh extracts a named TopoJSON object set. Unlike the feature option, the corresponding geo data is returned as a single, unified mesh instance, not as individual GeoJSON features. Extracting a mesh is useful for more efficiently drawing borders or other geographic elements that you do not need to associate with specific regions such as individual countries, states or counties.