Last active
April 21, 2018 18:42
-
-
Save steveharoz/0c4a97f39b012644d972d0b1f9f0728e to your computer and use it in GitHub Desktop.
Simple Vega in HTML replaced by new chart
This file contains 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
<body> | |
<div id="chartDiv"></div> | |
<script src="https://vega.github.io/vega/vega.min.js"></script> | |
<script type="text/javascript"> | |
var chartSpec1 = { | |
"$schema": "https://vega.github.io/schema/vega/v3.json", | |
"width": 400, | |
"height": 400, | |
"padding": 5, | |
"title": "blah blah blah blah blah blah blah blah blah", | |
"data": [ | |
{ | |
"name": "table", | |
"values": [ | |
{"x": 2000, "y": 0.28}, | |
{"x": 2000.5, "y": 0.49}, | |
{"x": 2001, "y": 0.49}, | |
{"x": 2001.5, "y": 0.29}, | |
{"x": 2002, "y": 0.32}, | |
{"x": 2002.5, "y": 0.36}, | |
{"x": 2003, "y": 0.59}, | |
{"x": 2003.5, "y": 0.62} | |
] | |
} | |
], | |
"scales": [ | |
{ | |
"name": "x", | |
"type": "linear", | |
"range": "width", | |
"zero": false, | |
"domain": [2000, 2010] | |
}, | |
{ | |
"name": "y", | |
"type": "linear", | |
"range": "height", | |
"domain": [0, 1] | |
} | |
], | |
"axes": [ | |
{"orient": "bottom", "scale": "x", "format": ".0f"}, | |
{"orient": "left", "scale": "y", "format": "%"} | |
], | |
"marks": [ | |
{ | |
"type": "group", | |
"from": { | |
"facet": { | |
"name": "series", | |
"data": "table", | |
"groupby": "c" | |
} | |
}, | |
"marks": [ | |
{ | |
"type": "line", | |
"from": {"data": "series"}, | |
"encode": { | |
"enter": { | |
"x": {"scale": "x", "field": "x"}, | |
"y": {"scale": "y", "field": "y"}, | |
"stroke": {"value": "#276EB8"}, | |
"strokeWidth": {"value": 4} | |
} | |
} | |
} | |
] | |
} | |
] | |
} | |
</script> | |
<script type="text/javascript"> | |
var view = new vega.View(vega.parse(chartSpec1)) | |
.renderer('svg') // set renderer (canvas or svg) | |
.initialize('#view') // initialize view within parent DOM container | |
.run(); | |
function replaceChart(title, xValues, yValues) { | |
// put new values into the chart spec | |
chartSpec1.title = title; | |
chartSpec1.data[0].values = []; | |
for (let i = 0; i < xValues.length; i++) { | |
chartSpec1.data[0].values.push( | |
{"x": xValues[i], "y": yValues[i]} | |
); | |
} | |
// clear out the old chart and replace with the new one | |
view = new vega.View(vega.parse(chartSpec1)) | |
.renderer('svg') // set renderer (canvas or svg) | |
.initialize('#chartDiv') // initialize view within parent DOM container | |
.run(); | |
} | |
var years = [2000, 2000.5, 2001, 2001.5, 2002, 2002.5, 2003, 2003.5]; | |
// timer to replace chart with new title and random data | |
setInterval( () => { | |
replaceChart( | |
"Title " + Date.now().toLocaleString(), | |
years, | |
years.map(x => Math.random()/5 + (x-2000)/10) | |
) | |
}, 200) | |
</script> | |
</body> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment