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 or constant values.
// Specification of a Single View
{
"data": ... ,
"mark": ... ,
"encoding": { // Encoding
// Position Channels
"x": ...,
"y": ...,
"x2": ...,
"y2": ...,
"xError": ...,
"yError": ...,
"xError2": ...,
"yError2": ...,
// Geographic Position Channels
"longtitude": ...,
"latitude": ...,
// Mark Properties Channels
"color": ...,
"opacity": ...,
"fillOpacity": ...,
"strokeOpacity": ...,
"strokeWidth": ...,
"size": ...,
"shape": ...,
// Text and Tooltip Channels
"text": ...,
"tooltip": ...,
// Hyperlink Channel
"href": ...,
// Key Channel
"key": ...,
// Order Channel
"order": ...,
// Level of Detail Channel
"detail": ...,
// 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
- Geographic Position Channels:
longitude
,latitude
,longitude2
,latitude2
- Mark Property Channels:
color
,opacity
,fillOpacity
,strokeOpacity
,shape
,size
,strokeWidth
- Text and Tooltip Channels:
text
,tooltip
- Hyperlink Channel:
href
- Level of Detail Channel:
detail
- Key Channel:
key
- Order Channel:
order
- Facet Channels:
facet
,row
,column
Channel Definition
Each channel definition object is either a field definition, which describes the data field encoded by the channel, or a value definition, which describes an encoded constant value.
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 |
Required. The encoded field’s type of measurement ( Note:
See also: |
bin | Boolean | BinParams | String | Null |
A flag for binning a
Default value: See also: |
timeUnit | TimeUnit |
Time unit (e.g., Default value: See also: |
aggregate | Aggregate |
Aggregation function for the field
(e.g., Default value: See also: |
title | String | 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 value to an encoding channel, the channel’s value definition must describe the value
property. (See the value
page for more examples.)
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 | PositionFieldDef | ValueDef |
X coordinates of the marks, or width of horizontal The |
y | PositionFieldDef | ValueDef |
Y coordinates of the marks, or height of vertical The |
x2 | FieldDef | ValueDef |
X2 coordinates for ranged The |
y2 | FieldDef | ValueDef |
Y2 coordinates for ranged The |
Position Field Definition
In addition to field
, type
, bin
, timeUnit
and aggregate
, field definitions for x
and y
channels may also include 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: |
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.
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 | FieldDef | ValueDef |
Longitude position of geographically projected marks. |
latitude | FieldDef | ValueDef |
Latitude position of geographically projected marks. |
longitude2 | FieldDef | ValueDef |
Longitude-2 position for geographically projected ranged |
latitude2 | FieldDef | ValueDef |
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 |
---|---|---|
color | MarkPropFieldDef | MarkPropValueDef |
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 | MarkPropFieldDef | MarkPropValueDef |
Fill color of the marks.
Default value: If undefined, the default color depends on mark config’s Note: When using |
stroke | MarkPropFieldDef | MarkPropValueDef |
Stroke color of the marks.
Default value: If undefined, the default color depends on mark config’s Note: When using |
opacity | MarkPropFieldDef | MarkPropValueDef |
Opacity of the marks. Default value: If undefined, the default opacity depends on mark config’s |
fillOpacity | MarkPropFieldDef | MarkPropValueDef |
Fill opacity of the marks. Default value: If undefined, the default opacity depends on mark config’s |
strokeOpacity | MarkPropFieldDef | MarkPropValueDef |
Stroke opacity of the marks. Default value: If undefined, the default opacity depends on mark config’s |
shape | MarkPropFieldDef | MarkPropValueDef |
Shape of the mark.
Default value: If undefined, the default shape depends on mark config’s |
size | MarkPropFieldDef | MarkPropValueDef |
Size of the mark.
|
strokeWidth | MarkPropFieldDef | MarkPropValueDef |
Stroke width of the marks. Default value: If undefined, the default stroke width depends on mark config’s |
Mark Property Field Definition
In addition to field
, type
, bin
, timeUnit
and aggregate
, field definitions for mark property channels may also include 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 selection 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 | Any |
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 | TextValueDef |
Text of the |
tooltip | TextFieldDef | TextValueDef | TextFieldDef[] | Null |
The tooltip text to show upon mouse hover. |
Text and Tooltip Field Definition
In addition to field
, type
, bin
, timeUnit
and aggregate
, field definitions for text
and tooltip
channels may also include these properties:
Property | Type | Description |
---|---|---|
format | String |
The text formatting pattern for labels of guides (axes, legends, headers) and text marks.
See the format documentation for more examples. Default value: Derived from numberFormat config for number format and from timeFormat config for time format. |
formatType | String |
The format type for labels ( Default value:
|
condition | ConditionalValueDef | ConditionalValueDef[] |
One or more value definition(s) with a selection 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 | ConditionFieldDef | ConditionalValueDef | ConditionalValueDef[] |
A field definition or one or more value definition(s) with a selection 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 | TextFieldDef | TextValueDef |
A URL to load upon mouse click. |
Hyperlink Field Definition
In addition to field
, type
, bin
, timeUnit
and aggregate
, field definitions for the href
channel can include the condition
property to specify conditional logic.
Property | Type | Description |
---|---|---|
condition | ConditionalValueDef | ConditionalValueDef[] |
One or more value definition(s) with a selection or a test predicate. Note: A field definition’s |
The example below show 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 | ConditionalFieldDef | ConditionalValueDef | ConditionalValueDef[] |
A field definition or one or more value definition(s) with a selection predicate. |
Level of Detail Channel
Grouping data is another important operation in data visualization. For line and area marks, mapping a unaggregate 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) and the order of data points in line marks for connected scatterplots (see an example in the line
page).
Property | Type | Description |
---|---|---|
order | OrderFieldDef | OrderFieldDef[] | ValueDef |
Order of the marks.
Note: In aggregate plots, |
Order Field Definition
In addition to field
, type
, bin
, timeUnit
and aggregate
, field definitions for the order
channel can include sort
.
Property | Type | Description |
---|---|---|
sort | String |
The sort order. One of |
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.