From e5887b3967aa04ad3fafeaef026d3753930609f4 Mon Sep 17 00:00:00 2001 From: Kanit Wongsuphasawat Date: Fri, 24 Jun 2022 10:36:40 -0700 Subject: [PATCH] docs(examples): Multi Series Line Chart with an Interactive Point Highlight (#8227) Co-authored-by: GitHub Actions Bot --- .../compiled/interactive_line_point_hover.png | Bin 0 -> 27011 bytes .../compiled/interactive_line_point_hover.svg | 1 + .../interactive_line_point_hover.vg.json | 249 ++++++++++++++++++ .../interactive_line_point_hover.vl.json | 29 ++ ...active_line_point_hover_normalized.vl.json | 40 +++ site/_data/examples.json | 6 +- site/_includes/docs_toc.md | 2 - 7 files changed, 324 insertions(+), 3 deletions(-) create mode 100644 examples/compiled/interactive_line_point_hover.png create mode 100644 examples/compiled/interactive_line_point_hover.svg create mode 100644 examples/compiled/interactive_line_point_hover.vg.json create mode 100644 examples/specs/interactive_line_point_hover.vl.json create mode 100644 examples/specs/normalized/interactive_line_point_hover_normalized.vl.json diff --git a/examples/compiled/interactive_line_point_hover.png b/examples/compiled/interactive_line_point_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..9d0be7bb74d9d8af88f1920ec0153165aa1d7d5d GIT binary patch literal 27011 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 V^?(Etf>V`{WF?g(O2v%*{s;V&E|>rS literal 0 HcmV?d00001 diff --git a/examples/compiled/interactive_line_point_hover.svg b/examples/compiled/interactive_line_point_hover.svg new file mode 100644 index 0000000000..9c4e701dea --- /dev/null +++ b/examples/compiled/interactive_line_point_hover.svg @@ -0,0 +1 @@ +200020022004200620082010date0200400600800priceAAPLAMZNGOOGIBMMSFTsymbol \ No newline at end of file diff --git a/examples/compiled/interactive_line_point_hover.vg.json b/examples/compiled/interactive_line_point_hover.vg.json new file mode 100644 index 0000000000..7058d2c3b1 --- /dev/null +++ b/examples/compiled/interactive_line_point_hover.vg.json @@ -0,0 +1,249 @@ +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "description": "Stock prices of 5 Tech Companies over Time, with a point marker on hover. Note that the hidden markers are intentionally bigger to make it easier for readers to hover.", + "background": "white", + "padding": 5, + "width": 200, + "height": 200, + "style": "cell", + "data": [ + { + "name": "hover_store", + "transform": [{"type": "collect", "sort": {"field": "_vgsid_"}}] + }, + { + "name": "source_0", + "url": "data/stocks.csv", + "format": {"type": "csv", "parse": {"date": "date"}}, + "transform": [{"type": "identifier", "as": "_vgsid_"}] + }, + { + "name": "data_0", + "source": "source_0", + "transform": [ + { + "type": "filter", + "expr": "(isDate(datum[\"date\"]) || (isValid(datum[\"date\"]) && isFinite(+datum[\"date\"]))) && isValid(datum[\"price\"]) && isFinite(+datum[\"price\"])" + } + ] + } + ], + "signals": [ + { + "name": "unit", + "value": {}, + "on": [ + {"events": "mousemove", "update": "isTuple(group()) ? group() : unit"} + ] + }, + { + "name": "hover", + "update": "vlSelectionResolve(\"hover_store\", \"union\", true, true)" + }, + { + "name": "hover_tuple", + "on": [ + { + "events": [{"source": "scope", "type": "mouseover"}], + "update": "datum && item().mark.marktype !== 'group' ? {unit: \"layer_1\", _vgsid_: (item().isVoronoi ? datum.datum : datum)[\"_vgsid_\"]} : null", + "force": true + }, + {"events": [{"source": "view", "type": "mouseout"}], "update": "null"} + ] + }, + { + "name": "hover_toggle", + "value": false, + "on": [ + { + "events": [{"source": "scope", "type": "mouseover"}], + "update": "event.shiftKey" + }, + {"events": [{"source": "view", "type": "mouseout"}], "update": "false"} + ] + }, + { + "name": "hover_modify", + "on": [ + { + "events": {"signal": "hover_tuple"}, + "update": "modify(\"hover_store\", hover_toggle ? null : hover_tuple, hover_toggle ? null : true, hover_toggle ? hover_tuple : null)" + } + ] + } + ], + "marks": [ + { + "name": "layer_0_pathgroup", + "type": "group", + "from": { + "facet": { + "name": "faceted_path_layer_0_main", + "data": "source_0", + "groupby": ["symbol"] + } + }, + "encode": { + "update": { + "width": {"field": {"group": "width"}}, + "height": {"field": {"group": "height"}} + } + }, + "marks": [ + { + "name": "layer_0_marks", + "type": "line", + "style": ["line"], + "sort": {"field": "datum[\"date\"]"}, + "interactive": false, + "from": {"data": "faceted_path_layer_0_main"}, + "encode": { + "update": { + "stroke": {"scale": "color", "field": "symbol"}, + "description": { + "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])" + }, + "x": {"scale": "x", "field": "date"}, + "y": {"scale": "y", "field": "price"}, + "defined": { + "signal": "isValid(datum[\"date\"]) && isFinite(+datum[\"date\"]) && isValid(datum[\"price\"]) && isFinite(+datum[\"price\"])" + } + } + } + } + ] + }, + { + "name": "layer_1_marks", + "type": "symbol", + "style": ["circle"], + "interactive": true, + "from": {"data": "data_0"}, + "encode": { + "update": { + "opacity": [ + { + "test": "length(data(\"hover_store\")) && vlSelectionIdTest(\"hover_store\", datum)", + "value": 1 + }, + {"value": 0} + ], + "tooltip": { + "signal": "{\"date\": timeFormat(datum[\"date\"], '%b %d, %Y'), \"price\": format(datum[\"price\"], \"\"), \"symbol\": isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]}" + }, + "fill": {"scale": "color", "field": "symbol"}, + "ariaRoleDescription": {"value": "circle"}, + "description": { + "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])" + }, + "x": {"scale": "x", "field": "date"}, + "y": {"scale": "y", "field": "price"}, + "size": [ + { + "test": "length(data(\"hover_store\")) && vlSelectionIdTest(\"hover_store\", datum)", + "value": 48 + }, + {"value": 100} + ], + "shape": {"value": "circle"} + } + } + } + ], + "scales": [ + { + "name": "x", + "type": "time", + "domain": { + "fields": [ + {"data": "source_0", "field": "date"}, + {"data": "data_0", "field": "date"} + ] + }, + "range": [0, {"signal": "width"}] + }, + { + "name": "y", + "type": "linear", + "domain": { + "fields": [ + {"data": "source_0", "field": "price"}, + {"data": "data_0", "field": "price"} + ] + }, + "range": [{"signal": "height"}, 0], + "nice": true, + "zero": true + }, + { + "name": "color", + "type": "ordinal", + "domain": { + "fields": [ + {"data": "source_0", "field": "symbol"}, + {"data": "data_0", "field": "symbol"} + ], + "sort": true + }, + "range": "category" + } + ], + "axes": [ + { + "scale": "x", + "orient": "bottom", + "gridScale": "y", + "grid": true, + "tickCount": {"signal": "ceil(width/40)"}, + "domain": false, + "labels": false, + "aria": false, + "maxExtent": 0, + "minExtent": 0, + "ticks": false, + "zindex": 0 + }, + { + "scale": "y", + "orient": "left", + "gridScale": "x", + "grid": true, + "tickCount": {"signal": "ceil(height/40)"}, + "domain": false, + "labels": false, + "aria": false, + "maxExtent": 0, + "minExtent": 0, + "ticks": false, + "zindex": 0 + }, + { + "scale": "x", + "orient": "bottom", + "grid": false, + "title": "date", + "labelFlush": true, + "labelOverlap": true, + "tickCount": {"signal": "ceil(width/40)"}, + "zindex": 0 + }, + { + "scale": "y", + "orient": "left", + "grid": false, + "title": "price", + "labelOverlap": true, + "tickCount": {"signal": "ceil(height/40)"}, + "zindex": 0 + } + ], + "legends": [ + { + "stroke": "color", + "symbolType": "circle", + "title": "symbol", + "fill": "color", + "encode": {"symbols": {"update": {"opacity": {"value": 1}}}} + } + ] +} diff --git a/examples/specs/interactive_line_point_hover.vl.json b/examples/specs/interactive_line_point_hover.vl.json new file mode 100644 index 0000000000..99d08dfdae --- /dev/null +++ b/examples/specs/interactive_line_point_hover.vl.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "Stock prices of 5 Tech Companies over Time, with a point marker on hover. Note that the hidden markers are intentionally bigger to make it easier for readers to hover.", + "data": {"url": "data/stocks.csv"}, + "encoding": { + "x": {"field": "date", "type": "temporal"}, + "y": {"field": "price", "type": "quantitative"}, + "color": {"field": "symbol", "type": "nominal"} + }, + "layer": [{ + "mark": "line" + }, { + "params": [{ + "name": "hover", + "select": {"type": "point", "on": "mouseover", "clear": "mouseout"} + }], + "mark": {"type": "circle", "tooltip": true}, + "encoding": { + "opacity": { + "condition": {"test": {"param": "hover", "empty": false}, "value": 1}, + "value": 0 + }, + "size": { + "condition": {"test": {"param": "hover", "empty": false}, "value": 48}, + "value": 100 + } + } + }] +} diff --git a/examples/specs/normalized/interactive_line_point_hover_normalized.vl.json b/examples/specs/normalized/interactive_line_point_hover_normalized.vl.json new file mode 100644 index 0000000000..3b055ad9fd --- /dev/null +++ b/examples/specs/normalized/interactive_line_point_hover_normalized.vl.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "Stock prices of 5 Tech Companies over Time, with a point marker on hover. Note that the hidden markers are intentionally bigger to make it easier for readers to hover.", + "data": {"url": "data/stocks.csv"}, + "layer": [ + { + "mark": "line", + "encoding": { + "x": {"field": "date", "type": "temporal"}, + "y": {"field": "price", "type": "quantitative"}, + "color": {"field": "symbol", "type": "nominal"} + } + }, + { + "params": [ + { + "name": "hover", + "select": {"type": "point", "on": "mouseover", "clear": "mouseout"} + } + ], + "mark": {"type": "circle", "tooltip": true}, + "encoding": { + "x": {"field": "date", "type": "temporal"}, + "y": {"field": "price", "type": "quantitative"}, + "color": {"field": "symbol", "type": "nominal"}, + "opacity": { + "condition": {"value": 1, "test": {"param": "hover", "empty": false}}, + "value": 0 + }, + "size": { + "condition": { + "value": 48, + "test": {"param": "hover", "empty": false} + }, + "value": 100 + } + } + } + ] +} \ No newline at end of file diff --git a/site/_data/examples.json b/site/_data/examples.json index 093515eaca..760e1aff13 100644 --- a/site/_data/examples.json +++ b/site/_data/examples.json @@ -832,9 +832,13 @@ }, { "name": "interactive_line_hover", - "title": "Multi Series Line Chart with Interactive Highlight", + "title": "Multi Series Line Chart with an Interactive Line Highlight", "description": "The plot below uses argmax to position text labels at the end of line. It also applies single selection to highlight a hovered line. Note that we can hidden thick lines to make it easier to hover." }, + { + "name": "interactive_line_point_hover", + "title": "Multi Series Line Chart with an Interactive Point Highlight" + }, { "name": "interactive_multi_line_label", "title": "Multi Series Line Chart with Labels", diff --git a/site/_includes/docs_toc.md b/site/_includes/docs_toc.md index 8902f79e9c..a71657fc06 100644 --- a/site/_includes/docs_toc.md +++ b/site/_includes/docs_toc.md @@ -287,7 +287,6 @@ - [Nominal]({{site.baseurl}}/docs/type.html#nominal) - [GeoJSON]({{site.baseurl}}/docs/type.html#geojson) - [Value]({{site.baseurl}}/docs/value.html) - - [Examples]({{site.baseurl}}/docs/value.html#examples) - [Projection]({{site.baseurl}}/docs/projection.html) - [Documentation Overview]({{site.baseurl}}/docs/projection.html#documentation-overview) - [Projection Properties]({{site.baseurl}}/docs/projection.html#projection-properties) @@ -330,7 +329,6 @@ - [Using Parameters]({{site.baseurl}}/docs/parameter.html#using-parameters) - [Selection Configuration]({{site.baseurl}}/docs/parameter.html#config) - [Value]({{site.baseurl}}/docs/value.html) - - [Examples]({{site.baseurl}}/docs/value.html#examples) - [Expr]({{site.baseurl}}/docs/parameter.html) - [Documentation Overview]({{site.baseurl}}/docs/parameter.html#documentation-overview) - [Defining a Parameter]({{site.baseurl}}/docs/parameter.html#defining-a-parameter)