Last active
July 16, 2021 15:06
-
-
Save simonhearne/2409ed0d98bf672b685d8247e6cb4bf2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "$schema": "https://vega.github.io/schema/vega/v5.json", | |
| "description": "", | |
| "width": 840, | |
| "height": 500, | |
| "padding": 5, | |
| "title": { | |
| "text": { | |
| "signal": "['COVID-19 Cases by England Region',utcFormat(timestamp*1000, '%e %B %Y')]" | |
| } | |
| }, | |
| "signals": [ | |
| { | |
| "name": "timestamp", | |
| "value": 1580342400, | |
| "on": [ | |
| { | |
| "events": { | |
| "type": "timer", | |
| "throttle": 16 | |
| }, | |
| "update": "update?((timestamp >= date_extent[1])?date_extent[0]:timestamp+86400):timestamp" | |
| }, | |
| {"events": "rect:mouseover", "update": "datum.date"} | |
| ] | |
| }, | |
| { | |
| "name": "update", | |
| "value": true, | |
| "bind": { | |
| "name": "Animate", | |
| "input": "checkbox" | |
| } | |
| }, | |
| { | |
| "name": "metric", | |
| "value": "newCasesBySpecimenDate" | |
| } | |
| ], | |
| "data": [ | |
| { | |
| "name": "data", | |
| "url": {"signal": "'https://api.coronavirus.data.gov.uk/v2/data?areaType=ltla&metric='+metric+'&format=csv'"}, | |
| "format": {"type": "csv", "parse": "auto"}, | |
| "transform": [ | |
| { | |
| "type": "collect", | |
| "sort": { | |
| "field": ["date"], | |
| "order": ["ascending"] | |
| } | |
| }, | |
| { | |
| "type": "formula", | |
| "expr": "utcFormat(datum.date, '%e %B %Y')", | |
| "as": "UTCdate" | |
| }, | |
| { | |
| "type": "formula", | |
| "expr": "datum.date/1000", | |
| "as": "date" | |
| }, | |
| { | |
| "type": "extent", | |
| "field": {"signal": "metric"}, | |
| "signal": "metric_extent" | |
| }, | |
| { | |
| "type": "extent", | |
| "field": "date", | |
| "signal": "date_extent" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "totals", | |
| "source": "data", | |
| "transform": [ | |
| { | |
| "type": "aggregate", | |
| "groupby": ["date"], | |
| "fields": [{"signal":"metric"}], | |
| "ops": ["sum"], | |
| "as":["total"] | |
| }, | |
| { | |
| "type": "extent", | |
| "field": "total", | |
| "signal": "total_metric_extent" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "covid", | |
| "source": "data", | |
| "transform": [ | |
| { | |
| "type": "filter", | |
| "expr": "datum.date == timestamp" | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "regions", | |
| "url": "https://martinjc.github.io/UK-GeoJSON/json/eng/topo_lad.json", | |
| "format": {"type": "topojson", "feature": "lad"}, | |
| "transform": [ | |
| { | |
| "type": "lookup", "from": "covid", "key": "areaCode", "fields": ["id"], "values": [{"signal": "metric"},"areaName"] | |
| } | |
| ] | |
| } | |
| ], | |
| "projections": [ | |
| { | |
| "name": "england", | |
| "size": {"signal": "[width, height]"}, | |
| "fit": {"signal": "data('regions')"}, | |
| "type": "mercator" | |
| } | |
| ], | |
| "scales": [ | |
| { | |
| "name": "color", | |
| "type": "linear", | |
| "domain": [1,1000], | |
| "range": {"scheme": "inferno"}, | |
| "reverse": true | |
| } | |
| ], | |
| "legends": [ | |
| { | |
| "fill": "color", | |
| "orient": "bottom-right", | |
| "title": {"signal": "metric"} | |
| } | |
| ], | |
| "layout": {"padding": 20, "bounds": "full", "align": "each"}, | |
| "marks": [ | |
| { | |
| "type": "group", | |
| "style": "cell", | |
| "encode": { | |
| }, | |
| "marks": [ | |
| { | |
| "type": "shape", | |
| "from": {"data": "regions"}, | |
| "encode": { | |
| "update": { | |
| "fill": {"signal": "datum[metric] !== null ? scale('color', datum[metric]) : 'lightgrey'"}, | |
| "tooltip": {"signal": "{'title': datum.areaName,'Value': datum[metric]}"}, | |
| "hover": { "fill": {"value": "red"} } | |
| } | |
| }, | |
| "transform": [ | |
| { "type": "geoshape", "projection": "england" } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "type": "group", | |
| "name": "minichart", | |
| "style": "cell", | |
| "encode": { | |
| "enter": { | |
| "width": {"signal": "width/4"}, | |
| "height": {"signal": "height/4"}, | |
| "fill": {"value": "lightgrey"}, | |
| "fillOpacity": {"value": 0.2} | |
| } | |
| }, | |
| "scales": [ | |
| { | |
| "name": "x", | |
| "type": "band", | |
| "range": [0,{"signal":"width/4"}], | |
| "domain": {"data": "totals", "field": "date"} | |
| }, | |
| { | |
| "name": "y", | |
| "type": "linear", | |
| "nice": false, | |
| "range": [{"signal":"height/4"},0], | |
| "domain": {"signal": "total_metric_extent"} | |
| } | |
| ], | |
| "signals": [ | |
| { | |
| "name": "highlight", | |
| "value": null | |
| } | |
| ], | |
| "axes": [ | |
| { | |
| "scale": "x", | |
| "orient": "bottom", | |
| "grid": false, | |
| "labels": false, | |
| "domain": false, | |
| "ticks": false | |
| }, | |
| { | |
| "scale": "y", | |
| "orient": "left", | |
| "grid": false, | |
| "domain": false, | |
| "labels": false, | |
| "ticks": false | |
| } | |
| ], | |
| "marks": [ | |
| { | |
| "type": "line", | |
| "from": {"data": "totals"}, | |
| "encode": { | |
| "enter": { | |
| "stroke": {"value": "rebeccapurple"}, | |
| "interpolate": {"value": "basis"} | |
| }, | |
| "update": { | |
| "x": {"scale": "x", "field": "date"}, | |
| "y": {"scale": "y", "field": "total"} | |
| } | |
| } | |
| }, | |
| { | |
| "type": "rule", | |
| "encode": { | |
| "enter": { | |
| "y": {"value":0}, | |
| "strokeWidth": {"value": 2}, | |
| "stroke": {"value": "red"}, | |
| "opacity": {"value": 0.5} | |
| }, | |
| "update": { | |
| "x": {"signal": "scale('x',timestamp)"}, | |
| "y2": {"signal": "height/4"} | |
| } | |
| } | |
| }, | |
| { | |
| "type": "rect", | |
| "from": {"data": "totals"}, | |
| "encode": { | |
| "enter": { | |
| "fill": {"value": "transparent"} | |
| }, | |
| "update": { | |
| "x": {"scale": "x", "field": "date"}, | |
| "width": {"scale": "x","band": 1}, | |
| "y": {"signal": "0"}, | |
| "y2": {"signal": "height/4"} | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment