From ec68565569149068afe587b10ec537d0790fe23c Mon Sep 17 00:00:00 2001 From: Jonathan Zong Date: Tue, 18 Feb 2025 15:16:47 -0500 Subject: [PATCH 1/8] animation docs first pass --- build/vega-lite-schema.json | 10 +++--- examples/compiled/animated_gapminder.png | Bin 83319 -> 88 bytes examples/compiled/animated_gapminder.svg | 6 +++- examples/compiled/animated_gapminder.vg.json | 15 -------- examples/specs/animated_gapminder.vl.json | 3 +- site/_data/examples.json | 8 +++++ site/docs/encoding.md | 34 +++++++++++++++++++ site/docs/encoding/scale.md | 7 ++++ src/channeldef.ts | 7 +++- src/encoding.ts | 3 ++ src/scale.ts | 4 +-- 11 files changed, 73 insertions(+), 24 deletions(-) diff --git a/build/vega-lite-schema.json b/build/vega-lite-schema.json index cb3d8b1c24..ab5b6c26bc 100644 --- a/build/vega-lite-schema.json +++ b/build/vega-lite-schema.json @@ -5095,7 +5095,8 @@ "description": "The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise." }, "time": { - "$ref": "#/definitions/TimeDef" + "$ref": "#/definitions/TimeDef", + "description": "Time position of animated marks." }, "tooltip": { "anyOf": [ @@ -9223,7 +9224,8 @@ "description": "The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise." }, "time": { - "$ref": "#/definitions/TimeDef" + "$ref": "#/definitions/TimeDef", + "description": "Time position of animated marks." }, "tooltip": { "anyOf": [ @@ -22019,7 +22021,7 @@ "additionalProperties": false, "properties": { "animationDuration": { - "description": "Default animation duration (in seconds) for time encodings, except for [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales.\n\n__Default value:__ `5`", + "description": "Default animation duration (in seconds) for [`time`](https://vega.github.io/vega-lite/docs/encoding.html#time) encodings (except for [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales, which use `framesPerSecond` instead).\n\n__Default value:__ `5`", "type": "number" }, "bandPaddingInner": { @@ -22111,7 +22113,7 @@ "minimum": 0 }, "framesPerSecond": { - "description": "Default framerate (frames per second) for time [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales.\n\n__Default value:__ `2`", + "description": "Default framerate (frames per second) for [`time`](https://vega.github.io/vega-lite/docs/encoding.html#time) encoding animation [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales.\n\n__Default value:__ `2`", "type": "number" }, "invalid": { diff --git a/examples/compiled/animated_gapminder.png b/examples/compiled/animated_gapminder.png index 4dff78c574ac0c9f5595f8d1287d6cefb2e81616..d8ad0a5237a52d559053458a6a2deb07b4402fa2 100644 GIT binary patch delta 77 zcmey~#Tud58Q|y6%O%Cdz`(%k>ERLtq!~e&gAGW^iyrBms3@WglyY$l;h346kdW|$ ZpMjBuk)d|eiTgkm44$rjF6*2UngC#15q|&x literal 83319 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 z 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 diff --git a/examples/compiled/animated_gapminder.svg b/examples/compiled/animated_gapminder.svg index 28b20d36f1..25c88b4044 100644 --- a/examples/compiled/animated_gapminder.svg +++ b/examples/compiled/animated_gapminder.svg @@ -1 +1,5 @@ -0123456789fertility0102030405060708090life_expectAfghanistanArgentinaAustraliaAustriaBahamasBangladeshBarbadosBelgiumBoliviaBrazilCanadaChileChinaColombiaCosta RicaCroatiaCubaDominican RepublicEcuadorEgyptEl SalvadorFinlandFranceGeorgiaGermanyGreeceGrenadaHaitiHong Kong, China…33 entriescountry \ No newline at end of file +<<<<<<< HEAD +0123456789fertility0102030405060708090life_expectAfghanistanArgentinaAustraliaAustriaBahamasBangladeshBarbadosBelgiumBoliviaBrazilCanadaChileChinaColombiaCosta RicaCroatiaCubaDominican RepublicEcuadorEgyptEl SalvadorFinlandFranceGeorgiaGermanyGreeceGrenadaHaitiHong Kong, China…33 entriescountry +======= +02468fertility020406080life_expect +>>>>>>> e169c8ed8 (animation docs first pass) diff --git a/examples/compiled/animated_gapminder.vg.json b/examples/compiled/animated_gapminder.vg.json index cede23a2a7..63dca90d2e 100644 --- a/examples/compiled/animated_gapminder.vg.json +++ b/examples/compiled/animated_gapminder.vg.json @@ -191,20 +191,5 @@ "tickCount": {"signal": "ceil(height/40)"}, "zindex": 0 } - ], - "legends": [ - { - "stroke": "color", - "symbolType": "circle", - "title": "country", - "encode": { - "symbols": { - "update": { - "fill": {"value": "transparent"}, - "opacity": {"value": 0.7} - } - } - } - } ] } diff --git a/examples/specs/animated_gapminder.vl.json b/examples/specs/animated_gapminder.vl.json index 11fdbb767d..d362939dfc 100644 --- a/examples/specs/animated_gapminder.vl.json +++ b/examples/specs/animated_gapminder.vl.json @@ -25,7 +25,8 @@ ], "encoding": { "color": { - "field": "country" + "field": "country", + "legend": null }, "x": { "field": "fertility", diff --git a/site/_data/examples.json b/site/_data/examples.json index 99568b67ea..6290fef3ad 100644 --- a/site/_data/examples.json +++ b/site/_data/examples.json @@ -955,5 +955,13 @@ "png": true } ] + }, + "Animated": { + "": [ + { + "name": "animated_gapminder", + "title": "Gapminder Frame Animation" + } + ] } } diff --git a/site/docs/encoding.md b/site/docs/encoding.md index 1781e80c1c..4b6655948b 100644 --- a/site/docs/encoding.md +++ b/site/docs/encoding.md @@ -84,6 +84,7 @@ The keys in the `encoding` object are encoding channels. Vega-Lite supports the - [Position Offset Channels](#position-offset): `xOffset`, `yOffset` - [Polar Position Channels](#polar): `theta`, `theta2`, `radius`, `radius2` - [Geographic Position Channels](#geo): `longitude`, `latitude`, `longitude2`, `latitude2` +- [Time Channel](#time): `time` - [Mark Property Channels](#mark-prop): `angle`, `color` (and `fill` / `stroke`), `opacity`, `fillOpacity`, `strokeOpacity`, `shape`, `size`, `strokeDash`, `strokeWidth` - [Text and Tooltip Channels](#text): `text`, `tooltip` - [Hyperlink Channel](#href): `href` @@ -261,6 +262,35 @@ Polar field and datum definitions may include `scale`, `stack`, and `sort` prope See [an example that uses `longitude` and `latitude` channels in a map]({{ site.baseurl }}/examples/geo_circle.html) or [another example that draws line segments (`rule`s) between points in a map]({{ site.baseurl }}/examples/geo_rule.html). +{:#time} + +## Time Channel + +The `time` channel maps data values to animation keyframes over time. When a time encoding is specified, together with a [selection parameter](selection.html) that has a `timer` [event stream](selection.html#on), marks are animated to show different data values as time progresses. + +See [an example scatterplot animation]({{ site.baseurl }}/examples/animated_gapminder.html) that uses the `time` channel and a `timer` selection parameter. + +{% include table.html props="time" source="Encoding" %} + +Note: `time` encoding animations currently have a few restrictions + +- must also explicility specify a selection parameter + - parameter must have a `timer` event + - parameter must select the same field as the `time` field definition +- must explicitliy define a filter using that parameter +- currently, the `time` channel only supports `band` scales (discrete frame animation) + + + {:#mark-prop} ## Mark Property Channels @@ -438,3 +468,7 @@ In addition to the constant `value`, [value definitions](#value-def) of the `ord {% include table.html props="facet,row,column" source="FacetedEncoding" %} For more information, read the [facet documentation](facet.html). + +``` + +``` diff --git a/site/docs/encoding/scale.md b/site/docs/encoding/scale.md index 8a5c6f9e2c..1e9aaf54bb 100644 --- a/site/docs/encoding/scale.md +++ b/site/docs/encoding/scale.md @@ -458,6 +458,13 @@ To provide themes for all scales, the scale config (`config: {scale: {...}}`) ca {% include table.html props="invalid" source="ScaleConfig" %} +#### Animation + + + + +{% include table.html props="framesPerSecond" source="ScaleConfig" %} + #### Other {% include table.html props="clamp,round,xReverse,useUnaggregatedDomain,zero" source="ScaleConfig" %} diff --git a/src/channeldef.ts b/src/channeldef.ts index 8e69bb08fe..edb10db2dc 100644 --- a/src/channeldef.ts +++ b/src/channeldef.ts @@ -525,7 +525,12 @@ export type PolarDef = PositionFieldDefBase | PositionDatumD export type TimeDef = TimeFieldDef; export interface TimeMixins { - rescale?: boolean; + /* + Optional. A boolean flag. When rescale is true, scale domains update according to the subset of data inside the current keyframe. When rescale is false, scale domains are generated from the entire dataset. + + __Default value:__ `false` + */ + rescale?: boolean; // TODO(jzong) commenting this out because it's not implemented yet. } export type TimeFieldDef = ScaleFieldDef & TimeMixins; diff --git a/src/encoding.ts b/src/encoding.ts index 3fc6753a66..428ebdce95 100644 --- a/src/encoding.ts +++ b/src/encoding.ts @@ -187,6 +187,9 @@ export interface Encoding { */ radius2?: Position2Def; + /** + * Time position of animated marks. + */ time?: TimeDef; /** diff --git a/src/scale.ts b/src/scale.ts index 7af9ae5e69..526269362d 100644 --- a/src/scale.ts +++ b/src/scale.ts @@ -436,7 +436,7 @@ export interface ScaleConfig extends ScaleInvali zero?: boolean; /** - * Default framerate (frames per second) for time [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales. + * Default framerate (frames per second) for [`time`](https://vega.github.io/vega-lite/docs/encoding.html#time) encoding animation [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales. * * __Default value:__ `2` * @@ -444,7 +444,7 @@ export interface ScaleConfig extends ScaleInvali framesPerSecond?: number; /** - * Default animation duration (in seconds) for time encodings, except for [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales. + * Default animation duration (in seconds) for [`time`](https://vega.github.io/vega-lite/docs/encoding.html#time) encodings (except for [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales, which use `framesPerSecond` instead). * * __Default value:__ `5` * From dff32bfe92fb415c85b018e2cf336b7eeb8abe61 Mon Sep 17 00:00:00 2001 From: Jonathan Zong Date: Tue, 18 Feb 2025 15:29:49 -0500 Subject: [PATCH 2/8] hop example --- examples/compiled/animated_hop.svg | 6 +++++- site/_data/examples.json | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/compiled/animated_hop.svg b/examples/compiled/animated_hop.svg index 4a0bf61361..d03cfe784a 100644 --- a/examples/compiled/animated_hop.svg +++ b/examples/compiled/animated_hop.svg @@ -1 +1,5 @@ -0102030405060precipitation \ No newline at end of file +<<<<<<< HEAD +0102030405060precipitation +======= +0102030405060precipitation +>>>>>>> 225066019 (hop example) diff --git a/site/_data/examples.json b/site/_data/examples.json index 6290fef3ad..677efc59e2 100644 --- a/site/_data/examples.json +++ b/site/_data/examples.json @@ -960,7 +960,13 @@ "": [ { "name": "animated_gapminder", - "title": "Gapminder Frame Animation" + "title": "Gapminder Frame Animation", + "description": "An animated scatterplot showing the relationship between fertility rates and life expectancy across different countries, based on Gapminder data. Each point represents a country, with points colored by country and the visualization updating over time to show how these metrics have changed across years." + }, + { + "name": "animated_hop", + "title": "Hypothetical outcome plot", + "description": "An animated tick chart displaying precipitation measurements from Seattle weather data. Each horizontal tick mark represents a precipitation value for a specific date, with the visualization updating over time to show the temporal progression of rainfall patterns." } ] } From 91c2f318c153ffffda7491cc6581dfc103605c8e Mon Sep 17 00:00:00 2001 From: Jonathan Zong Date: Tue, 18 Feb 2025 15:34:44 -0500 Subject: [PATCH 3/8] cleanup --- src/channeldef.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/channeldef.ts b/src/channeldef.ts index edb10db2dc..c04840d72a 100644 --- a/src/channeldef.ts +++ b/src/channeldef.ts @@ -530,7 +530,7 @@ export interface TimeMixins { __Default value:__ `false` */ - rescale?: boolean; // TODO(jzong) commenting this out because it's not implemented yet. + rescale?: boolean; } export type TimeFieldDef = ScaleFieldDef & TimeMixins; From fa87687c2d59dc0c32e3d59fac5147a8a85ccc17 Mon Sep 17 00:00:00 2001 From: Jonathan Zong Date: Tue, 18 Feb 2025 15:37:01 -0500 Subject: [PATCH 4/8] add docs link --- site/docs/encoding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/docs/encoding.md b/site/docs/encoding.md index 4b6655948b..dfc1373499 100644 --- a/site/docs/encoding.md +++ b/site/docs/encoding.md @@ -272,13 +272,13 @@ See [an example scatterplot animation]({{ site.baseurl }}/examples/animated_gapm {% include table.html props="time" source="Encoding" %} -Note: `time` encoding animations currently have a few restrictions +Note: `time` encoding animations currently have a few restrictions. See the [example gallery]({{ site.baseurl }}/examples/#animated) for examples of animated visualizations. - must also explicility specify a selection parameter - parameter must have a `timer` event - parameter must select the same field as the `time` field definition - must explicitliy define a filter using that parameter -- currently, the `time` channel only supports `band` scales (discrete frame animation) +- currently, the `time` channel only supports `band` scales (these are the default for discrete frame animation) + {% include table.html props="framesPerSecond" source="ScaleConfig" %} diff --git a/src/compile/scale/range.ts b/src/compile/scale/range.ts index c635d1561d..9f6ccd3abf 100644 --- a/src/compile/scale/range.ts +++ b/src/compile/scale/range.ts @@ -322,7 +322,7 @@ function defaultRange(channel: ScaleChannel, model: UnitModel): VgRange { // if (scaleType === 'band') { return {step: 1000 / config.scale.framesPerSecond}; // } - // return [0, config.scale.animationDuration * 1000]; // TODO(jzong): uncomment for linear scales when interpolation is implemented + // return [0, config.scale.animationDuration * 1000]; // TODO(jzong): uncomment for linear scales when interpolation is implemented https://github.com/vega/vega-lite/issues/9590 } case STROKEWIDTH: diff --git a/src/compile/scale/type.ts b/src/compile/scale/type.ts index 3812db7ab8..ef0bae2c60 100644 --- a/src/compile/scale/type.ts +++ b/src/compile/scale/type.ts @@ -118,7 +118,7 @@ function defaultType( return 'utc'; } else if (isTime(channel)) { // return 'linear'; - return 'band'; // TODO(jzong): when interpolation is implemented, this should be 'linear' + return 'band'; // TODO(jzong): when interpolation is implemented, this should be 'linear' https://github.com/vega/vega-lite/issues/9590 } return 'time'; @@ -136,7 +136,7 @@ function defaultType( return 'ordinal'; } else if (isTime(channel)) { // return 'linear'; - return 'band'; // TODO(jzong): when interpolation is implemented, this should be 'linear' + return 'band'; // TODO(jzong): when interpolation is implemented, this should be 'linear' https://github.com/vega/vega-lite/issues/9590 } return 'linear'; diff --git a/src/compile/selection/point.ts b/src/compile/selection/point.ts index dd88743f35..b9c9ede9be 100644 --- a/src/compile/selection/point.ts +++ b/src/compile/selection/point.ts @@ -27,7 +27,7 @@ const animationSignals = (selectionName: string, scaleName: string): Signal[] => }, // scale signals - // TODO(jzong): uncomment commented signals below when implementing interpolation + // TODO(jzong): uncomment commented signals below when implementing interpolation https://github.com/vega/vega-lite/issues/9590 {name: `${selectionName}_domain`, init: `domain('${scaleName}')`}, {name: MIN_EXTENT, init: `extent(${selectionName}_domain)[0]`}, // {name: 'max_extent', init: `extent(${selectionName}_domain)[1]`}, diff --git a/src/scale.ts b/src/scale.ts index 526269362d..f4d9e926ad 100644 --- a/src/scale.ts +++ b/src/scale.ts @@ -444,12 +444,14 @@ export interface ScaleConfig extends ScaleInvali framesPerSecond?: number; /** + * * Default animation duration (in seconds) for [`time`](https://vega.github.io/vega-lite/docs/encoding.html#time) encodings (except for [`band`](https://vega.github.io/vega-lite/docs/scale.html#band) scales, which use `framesPerSecond` instead). * * __Default value:__ `5` * */ - animationDuration?: number; + // TODO(jzong): uncomment when linear scales for animation are implemented https://github.com/vega/vega-lite/issues/9590 + // animationDuration?: number; } export const defaultScaleConfig: ScaleConfig = { @@ -481,7 +483,7 @@ export const defaultScaleConfig: ScaleConfig = { zero: true, framesPerSecond: 2, - animationDuration: 5, + // animationDuration: 5, //TODO(jzong): uncomment when linear scales for animation are implemented https://github.com/vega/vega-lite/issues/9590 }; export interface SchemeParams {