Public
Edited
Aug 28, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
data = (await require('vega-datasets'))['gapminder.json']()
Insert cell
Insert cell
md`${data.length} rows, ${Object.keys(data[0]).length} columns!`
Insert cell
Insert cell
printTable(data.slice(0, 10))
Insert cell
Insert cell
Insert cell
data2000 = data.filter(d => d.year === 2000)
Insert cell
printTable(data2000.slice(0, 10))
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
vl.markPoint()
.data(data2000)
.encode(
vl.x().fieldQ('fertility')
)
.render()
Insert cell
Insert cell
vl.markPoint()
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldO('cluster')
)
.render()
Insert cell
Insert cell
Insert cell
vl
.markPoint()
.data(data2000)
.encode(vl.x().fieldQ("fertility"), vl.y().fieldQ("life_expect"))
.render()
Insert cell
Insert cell
Insert cell
vl
.markPoint()
.data(data2000)
.encode(
vl.x().fieldO("fertility"),
vl.y().fieldQ("life_expect"),
vl.size().fieldQ("pop")
)
.render()
Insert cell
Insert cell
vl.markPoint()
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]})
)
.render()
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
vl.markPoint()
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster')
)
.render()
Insert cell
Insert cell
vl.markPoint({filled: true})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster')
)
.render()
Insert cell
Insert cell
Insert cell
Insert cell
vl.markPoint({filled: true})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster'),
vl.opacity().value(0.5),
vl.shape().fieldN('cluster')
)
.render()
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
vl.markPoint({filled: true})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster'),
vl.opacity().value(0.5),
vl.tooltip().fieldN('country')
)
.render()
Insert cell
Insert cell
vl.markPoint({filled: true})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster'),
vl.opacity().value(0.5),
vl.tooltip().fieldN('country'),
vl.order().fieldQ('pop').sort('descending')
)
.render()
Insert cell
Insert cell
Insert cell
vl.markPoint({filled: true})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster'),
vl.opacity().value(0.5),
vl.order().fieldQ('pop').sort('descending'),
vl.tooltip(['country', 'fertility', 'life_expect'])
)
.render()
Insert cell
Insert cell
vl.markPoint({filled: true, tooltip: true})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster'),
vl.opacity().value(0.5),
vl.order().fieldQ('pop').sort('descending')
)
.render()
Insert cell
Insert cell
vl.markPoint({filled: true, tooltip: {content: data}})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldQ('life_expect'),
vl.size().fieldQ('pop').scale({range: [0, 2000]}),
vl.color().fieldN('cluster'),
vl.opacity().value(0.5),
vl.order().fieldQ('pop').sort('descending')
)
.render()
Insert cell
Insert cell
Insert cell
vl.markPoint()
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldN('cluster'),
vl.shape().fieldN('cluster')
)
.render()
Insert cell
Insert cell
vl.markPoint({filled: true, size: 100})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldN('cluster'),
vl.shape().fieldN('cluster')
)
.render()
Insert cell
Insert cell
vl.markCircle({size: 100})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldN('cluster')
)
.render()
Insert cell
Insert cell
vl.markSquare({size: 100})
.data(data2000)
.encode(
vl.x().fieldQ('fertility'),
vl.y().fieldN('cluster')
)
.render()
Insert cell
Insert cell
vl.markBar()
.data(data2000)
.encode(
vl.y().fieldN('country'),
vl.x().fieldQ('pop')
)
.render()
Insert cell
Insert cell
vl.markLine()
.data(data)
.encode(
vl.x().fieldO('year'),
vl.y().fieldQ('fertility'),
vl.color().fieldN('country').legend(null),
vl.tooltip().fieldN('country')
)
.width(600)
.render()
Insert cell
Insert cell
Insert cell
dataUS = data.filter(d => d.country === 'United States')
Insert cell
vl.markLine()
.data(dataUS)
.encode(
vl.x().fieldO('year'),
vl.y().fieldQ('pop')
)
.width(600)
.render()
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more