Public
Edited
Feb 8, 2023
Insert cell
Insert cell
data = ({
'James': d3.cumsum([1654, 2175, 2478, 2132, 2250, 2304, 2258, 2111, 1683, 2036, 2089, 1743, 1920, 1954, 2251, 1505, 1698, 1126, 1695]),
'Dončić': d3.cumsum([1526, 1759, 1830, 1847]),
'Tatum': d3.cumsum([1112, 1243, 1547, 1692, 2046]),
'Abdul-Jabbar': d3.cumsum([2361, 2596, 2822, 2292, 2191, 1949, 2275, 2152, 1600, 1903, 2034, 2095, 1818, 1722, 1717, 1735, 1846, 1366, 1165])
})
Insert cell
flatData = Object.entries(data)
.map(
([player, cumsum]) =>
Array.from(cumsum).map((points, year) => ({
player,
points,
season: year + 1
}))
).flat()
Insert cell
Plot.plot({
marginLeft: 50,
y: {
nice: true,
grid: true,
},
color: {
legend: true,
domain: ['Abdul-Jabbar', 'James', 'Dončić', 'Tatum'],
range: ['#552583', '#860038', '#00538C', '#007A33']
},
marks: [
Plot.line(flatData, { x: 'season', y: 'points', stroke: 'player', strokeWidth: 2 }),
Plot.ruleY([0])
]
})
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