Encoding
Edit this pageAn integral part of the data visualization process is encoding data with visual properties of graphical marks. The encoding
property of a single view specification represents the mapping between encoding channels (such as x
, y
, or color
) and data fields, constant visual values, or constant data values (datum).
// Specification of a Single View
{
"data": ... ,
"mark": ... ,
"encoding": { // Encoding
// Position Channels
"x": ...,
"y": ...,
"x2": ...,
"y2": ...,
"xError": ...,
"yError": ...,
"xError2": ...,
"yError2": ...,
// Polar Position Channels
"theta": ...,
"radius": ...,
"theta2": ...,
"radius2": ...,
// Geographic Position Channels
"longitude": ...,
"latitude": ...,
"longitude2": ...,
"latitude2": ...,
// Mark Properties Channels
"color": ...,
"opacity": ...,
"fillOpacity": ...,
"strokeOpacity": ...,
"strokeWidth": ...,
"strokeDash": ...,
"size": ...,
"angle": ...,
"shape": ...,
// Text and Tooltip Channels
"text": ...,
"tooltip": ...,
// Hyperlink Channel
"href": ...,
// Description Channel
"description": ...,
// Level of Detail Channel
"detail": ...,
// Key Channel
"key": ...,
// Order Channel
"order": ...,
// Facet Channels
"facet": ...,
"row": ...,
"column": ...
},
...
}
Encoding Channels
The keys in the encoding
object are encoding channels. Vega-Lite supports the following groups of encoding channels
- Position Channels:
x
,y
,x2
,y2
,xError
,yError
,xError2
,yError2
- Position Offset Channels:
xOffset
,yOffset
- Polar Position Channels:
theta
,theta2
,radius
,radius2
- Geographic Position Channels:
longitude
,latitude
,longitude2
,latitude2
- Mark Property Channels:
angle
,color
(andfill
/stroke
),opacity
,fillOpacity
,strokeOpacity
,shape
,size
,strokeDash
,strokeWidth
- Text and Tooltip Channels:
text
,tooltip
- Hyperlink Channel:
href
- Description Channel:
description
- Level of Detail Channel:
detail
- Key Channel:
key
- Order Channel:
order
- Facet Channels:
facet
,row
,column
Channel Definition
Each channel definition object must be one of the following:
- Field definition, which describes the data field encoded by the channel.
- Value definition, which describes an encoded constant visual value.
- Datum definition, which describes a constant data value encoded via a scale.
Field Definition
// Specification of a Single View
{
...,
"encoding": { // Encoding
...: {
"field": ...,
"type": ...,
...
},
...
},
...
}
To encode a particular field in the data set with an encoding channel, the channel’s field definition must describe the field
name and its data type
. To facilitate data exploration, Vega-Lite also provides inline field transforms (aggregate
, bin
, sort
, stack
, and timeUnit
) as a part of a field definition in addition to the top-level transform
.
All field definitions support the following properties:
Property | Type | Description |
---|---|---|
field | Field |
Required. A string defining the name of the field from which to pull a data value or an object defining iterated values from the See also: Notes: 1) Dots ( |
type | String |
The type of measurement ( Vega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified Default value: 1) For a data
2) For a constant value in data domain (
Note:
See also: |
bin | Boolean | BinParams | String | Null |
A flag for binning a
Default value: See also: |
timeUnit | TimeUnit | String | TimeUnitParams |
Time unit (e.g., Default value: See also: |
aggregate | Aggregate |
Aggregation function for the field (e.g., Default value: See also: |
band | Any | |
title | Text | Null |
A title for the field. If Default value: derived from the field’s name and transformation function ( Notes: 1) You can customize the default field title format by providing the 2) If both field definition’s |
In addition, field definitions for different encoding channels may support the following properties:
-
scale
- The function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) for position and mark property channels. -
axis
- The guiding visualization to aid interpretation of scales for position channels. -
legend
- The guiding visualization to aid interpretation of mark property channels. -
format
- The formatting pattern for text value for text channels. -
stack
- Type of stacking offset if a position field with continuous domain should be stacked. -
sort
- Sort order for a field for position and mark property channels. -
condition
- The conditional encoding rule for mark property and text channels.
To see a list of additional properties for each type of encoding channels, please see the specific sections for position, mark property, text and tooltip, detail, order, and facet channels.
Value Definition
// Specification of a Single View
{
...,
"encoding": { // Encoding
...: {
"value": ...
},
...
},
...
}
To map a constant visual value to an encoding channel, the channel’s value definition must describe the value
property. (See the value
page for more examples.)
Datum Definition
// Specification of a Single View
{
...,
"encoding": { // Encoding
...: {
"datum": ...
},
...
},
...
}
To map a constant data value (datum
) via a scale to an encoding channel, the channel’s value definition must describe the datum
property. (See the datum
page for more examples.)
Property | Type | Description |
---|---|---|
datum | PrimitiveValue | DateTime | ExprRef | RepeatRef |
A constant value in data domain. |
Similar to a field definition, datum definition of different encoding channels may support band
, scale
, axis
, legend
, format
, or condition
properties. However, data transforms (aggregate
, bin
, timeUnit
, sort
cannot be applied to a datum definition).
Position Channels
x
and y
position channels determine the position of the marks, or width/height of horizontal/vertical "area"
and "bar"
. In addition, x2
and y2
can specify the span of ranged area
, bar
, rect
, and rule
.
By default, Vega-Lite automatically generates a scale and an axis for each field mapped to a position channel. If unspecified, properties of scales and axes are determined based on a set of rules by the compiler. scale
and axis
properties of the field definition can be used to customize their properties.
Property | Type | Description |
---|---|---|
x | PositionDef |
X coordinates of the marks, or width of horizontal The |
y | PositionDef |
Y coordinates of the marks, or height of vertical The |
x2 | Position2Def |
X2 coordinates for ranged The |
y2 | Position2Def |
Y2 coordinates for ranged The |
Position Field Definition and Datum Definition
In addition to the general field definition properties, field definitions for x
and y
channels may include the properties listed below. Similarly, datum definitions for x
and y
channels also support these properties.
Property | Type | Description |
---|---|---|
scale | Scale | Null |
An object defining properties of the channel’s scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels. If Default value: If undefined, default scale properties are applied. See also: |
axis | Axis | Null |
An object defining properties of axis’s gridlines, ticks and labels. If Default value: If undefined, default axis properties are applied. See also: |
sort | Sort |
Sort order for the encoded field. For continuous fields (quantitative or temporal), For discrete fields,
Default value: Note: See also: |
impute | ImputeParams | Null |
An object defining the properties of the Impute Operation to be applied. The field value of the other positional channel is taken as See also: |
stack | String | Null | Boolean |
Type of stacking offset if the field should be stacked.
Default value: See also: |
Note: x2
and y2
do not have their own definitions for scale
, axis
, sort
, and stack
since they share the same scales and axes with x
and y
respectively.
Position Offset Channels
xOffset
and yOffset
position channels determine additional offset to the x
or y
position.
Position Offset Field Definition and Datum Definition
In addition to the general field definition properties, field definitions for xOffset
and yOffset
channels may include the properties listed below. Similarly, datum definitions for x
and y
channels also support these properties.
Property | Type | Description |
---|---|---|
scale | Scale | Null |
An object defining properties of the channel’s scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels. If Default value: If undefined, default scale properties are applied. See also: |
sort | Sort |
Sort order for the encoded field. For continuous fields (quantitative or temporal), For discrete fields,
Default value: Note: See also: |
Example: Grouped Bar Chart
Note: Read here for more details about how to set step size for offset scale.
Example: Jittering
Polar Position Channels
theta
and radius
position channels determine the position or interval on polar coordinates for arc
and text
marks.
Property | Type | Description |
---|---|---|
theta | PolarDef |
|
radius | PolarDef |
The outer radius in pixels of arc marks. |
theta2 | Position2Def |
The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise. |
radius2 | Position2Def |
The inner radius in pixels of arc marks. |
Polar Field Definition and Datum Definition
Polar field and datum definitions may include scale
, stack
, and sort
properties, similar to position field and datum definitions.
Geographic Position Channels
longitude
and latitude
channels can be used to encode geographic coordinate data via a projection. In addition, longitude2
and latitude2
can specify the span of geographically projected ranged area
, bar
, rect
, and rule
.
Property | Type | Description |
---|---|---|
longitude | LatLongDef |
Longitude position of geographically projected marks. |
latitude | LatLongDef |
Latitude position of geographically projected marks. |
longitude2 | Position2Def |
Longitude-2 position for geographically projected ranged |
latitude2 | Position2Def |
Latitude-2 position for geographically projected ranged |
See an example that uses longitude
and latitude
channels in a map or another example that draws line segments (rule
s) between points in a map.
Mark Property Channels
Mark properties channels map data fields to visual properties of the marks. By default, Vega-Lite automatically generates a scale and a legend for each field mapped to a mark property channel. If unspecified, properties of scales and legends are determined based on a set of rules by the compiler. scale
and legend
properties of the field definition can be used to customize their properties. In addition, definitions of mark property channels can include the condition
property to specify conditional logic.
Here are the list of mark property channels:
Property | Type | Description |
---|---|---|
angle | MarkPropDef |
Rotation angle of point and text marks. |
color | MarkPropDef |
Color of the marks – either fill or stroke color based on the Default value: If undefined, the default color depends on mark config’s Note: 1) For fine-grained control over both fill and stroke colors of the marks, please use the |
fill | MarkPropDef |
Fill color of the marks. Default value: If undefined, the default color depends on mark config’s Note: The |
stroke | MarkPropDef |
Stroke color of the marks. Default value: If undefined, the default color depends on mark config’s Note: The |
opacity | MarkPropDef |
Opacity of the marks. Default value: If undefined, the default opacity depends on mark config’s |
fillOpacity | MarkPropDef |
Fill opacity of the marks. Default value: If undefined, the default opacity depends on mark config’s |
strokeOpacity | MarkPropDef |
Stroke opacity of the marks. Default value: If undefined, the default opacity depends on mark config’s |
shape | MarkPropDef |
Shape of the mark.
Default value: If undefined, the default shape depends on mark config’s |
size | MarkPropDef |
Size of the mark.
|
strokeDash | NumericArrayMarkPropDef |
Stroke dash of the marks. Default value: |
strokeWidth | MarkPropDef |
Stroke width of the marks. Default value: If undefined, the default stroke width depends on mark config’s |
Mark Property Field Definition and Datum Definition
Field definitions for mark property channels may also include the properties list below (in addition to field
, type
, bin
, timeUnit
and aggregate
).
Similarly, datum definitions for mark property channels also support these properties.
Property | Type | Description |
---|---|---|
scale | Scale | Null |
An object defining properties of the channel’s scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels. If Default value: If undefined, default scale properties are applied. See also: |
legend | Legend | Null |
An object defining properties of the legend. If Default value: If undefined, default legend properties are applied. See also: |
condition | ConditionalValueDef | ConditionalValueDef[] |
One or more value definition(s) with a parameter or a test predicate. Note: A field definition’s |
Mark Property Value Definition
In addition to the constant value
, value definitions of mark properties channels can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | ConditionalFieldDef | ConditionalValueDef | ConditionalValueDef[] |
A field definition or one or more value definition(s) with a parameter predicate. |
See the condition
page for examples how to specify condition logic.
Text and Tooltip Channels
Text and tooltip channels directly encode text values of the data fields. By default, Vega-Lite automatically determines appropriate format for quantitative and temporal values. Users can set format
property to customize text and time format. Similar to mark property channels, definitions of text and tooltip channels can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
text | TextFieldDef |
Text of the |
tooltip | StringFieldDefWithCondition | StringValueDefWithCondition | StringFieldDef[] | Null |
The tooltip text to show upon mouse hover. Specifying See the |
Text and Tooltip Field Definition
In addition to the general field definition properties, field definitions for text
and tooltip
channels may also include these properties:
Property | Type | Description |
---|---|---|
format | String | Object |
When used with the default
See the format documentation for more examples. When used with a custom Default value: Derived from numberFormat config for number format and from timeFormat config for time format. |
formatType | String |
The format type for labels. One of Default value:
|
condition | ConditionalValueDef | ConditionalValueDef[] |
One or more value definition(s) with a parameter or a test predicate. Note: A field definition’s |
Text and Tooltip Value Definition
In addition to the constant value
, value definitions of text
and tooltip
channels can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | ConditionalStringFieldDef | ConditionalValueDef | ConditionalValueDef[] |
A field definition or one or more value definition(s) with a parameter predicate. |
Multiple Field Definitions for Tooltips
Similar to detail
, you can use an array of field definitions. Vega-Lite will display a tooltip with multiple fields. Vega tooltip will display a table that shows the name of the field and its value. See the tooltip page for details.
Hyperlink Channel
By setting the href
channel, a mark becomes a hyperlink. The specified URL is loaded upon a mouse click. When the href
channel is specified, the cursor
mark property is set to "pointer"
by default to serve as affordance for hyperlinks.
Property | Type | Description |
---|---|---|
href | StringFieldDefWithCondition | StringValueDefWithCondition |
A URL to load upon mouse click. |
Hyperlink Field Definition
In addition to the general field definition properties, field definitions for the href
channel can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | Any |
The example below shows how the href channel can be used to provide links to external resources with more details.
Hyperlink Value Definition
In addition to the constant value
, value definitions of the href
channel can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | ConditionalStringFieldDef | ConditionalValueDef | ConditionalValueDef[] |
A field definition or one or more value definition(s) with a parameter predicate. |
Description Channel
By setting the description
channel, you can add a text description to the mark for ARIA accessibility (SVG output only). The "aria-label"
attribute in the generated SVG will be set to this description.
By default, Vega-Lite generates a description based on the encoding similar to default tooltips. To disable automatic descriptions, set config.aria
to false. No description will be generated if mark.aria
is set to false.
Property | Type | Description |
---|---|---|
description | StringFieldDefWithCondition | StringValueDefWithCondition |
A text description of this mark for ARIA accessibility (SVG output only). For SVG output the |
Description Field Definition
In addition to the general field definition properties, field definitions for the description
channel can include these properties:
Property | Type | Description |
---|---|---|
format | String | Object |
When used with the default
See the format documentation for more examples. When used with a custom Default value: Derived from numberFormat config for number format and from timeFormat config for time format. |
formatType | String |
The format type for labels. One of Default value:
|
condition | ConditionalValueDef | ConditionalValueDef[] |
One or more value definition(s) with a parameter or a test predicate. Note: A field definition’s |
Description Value Definition
In addition to the constant value
, value definitions of the description
channel can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | ConditionalStringFieldDef | ConditionalValueDef | ConditionalValueDef[] |
A field definition or one or more value definition(s) with a parameter predicate. |
Level of Detail Channel
Grouping data is another important operation in data visualization. For line and area marks, mapping a unaggregated data field (field without aggregate
function) to any non-position channel will group the lines and stacked areas by the field. For aggregated plots, all unaggregated fields encoded are used as grouping fields in the aggregation (similar to fields in GROUP BY
in SQL).
detail
channel specify an additional grouping field (or fields) for grouping data without mapping the field(s) to any visual properties.
Property | Type | Description |
---|---|---|
detail | FieldDef | FieldDef[] |
Additional levels of detail for grouping data in aggregate views and in line, trail, and area marks without mapping data to a specific visual channel. |
Examples
Here is a scatterplot showing average horsepower and displacement for cars from different origins. We map Origin
to detail
channel to use the field as a group-by field without mapping it to visual properties of the marks.
Here is a line chart showing stock prices of 5 tech companies over time. We map symbol
variable (stock market ticker symbol) to detail
to use them to group lines.
Here is a ranged dot plot showing life expectancy change in the five largest countries between 1955 and 2000. We use detail
here to group the lines such that they range only from one year to another within a country (as opposed to jumping between countries as well).
Key Channel
The key channel can enable object constancy for transitions over dynamic data. When a visualization’s data is updated (via Vega’s View API), the key value will be used to match data elements to existing mark instances.
Property | Type | Description |
---|---|---|
key | FieldDef |
A data field to use as a unique key for data binding. When a visualization’s data is updated, the key value will be used to match data elements to existing mark instances. Use a key channel to enable object constancy for transitions over dynamic data. |
Order Channel
order
channel can define a data field (or a ordered list of data fields) that are used to sorts stacking order for stacked charts (see an example in the stack
page), the order of data points in line marks for connected scatterplots (see an example in the line
page), and which data points are plotted on top in a chart (the “zorder”, see an example in the gallery).
Property | Type | Description |
---|---|---|
order | OrderFieldDef | OrderFieldDef[] | OrderValueDef | OrderOnlyDef |
Order of the marks.
Note: In aggregate plots, |
Order Field Definition
In addition to the general field definition properties, field definitions for the order
channel can include sort
.
Property | Type | Description |
---|---|---|
sort | String |
The sort order. One of |
Order Value Definition
In addition to the constant value
, value definitions of the order
channel can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | ConditionalValueDef | ConditionalValueDef[] |
One or more value definition(s) with a parameter or a test predicate. Note: A field definition’s |
Facet Channels
facet
, row
and column
are special encoding channels that facets single plots into trellis plots (or small multiples).
Property | Type | Description |
---|---|---|
facet | FacetFieldDef |
A field definition for the (flexible) facet of trellis plots. If either |
row | FacetFieldDef |
A field definition for the vertical facet of trellis plots. |
column | FacetFieldDef |
A field definition for the horizontal facet of trellis plots. |
For more information, read the facet documentation.