Published
Edited
Aug 20, 2018
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
color = d3.scaleSequential(d3.interpolateYlOrRd).domain([d3.min(data, d => d.value), d3.max(data, d => d.value)])
Insert cell
data = dailyCounts
Insert cell
Insert cell
Insert cell
Insert cell
homicides = d3.csv(dataUrl)
Insert cell
dailyData = groupByDay(homicides)
Insert cell
dailyCounts = Object.keys(dailyData)
.map(day => {
const date = new Date(day);
return {date: new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000), value: dailyData[day].length};
}).sort((a, b) => a.date - b.date) //.reverse()
Insert cell
function groupByDay(dataArray) {
let daily = {};
dataArray.map(data => {
const date = new Date(data.Date);
const timezoneOffset = date.getTimezoneOffset() * 60 * 1000;
const day = new Date(date.getTime() - timezoneOffset).toISOString().substring(0, 10); // ISO date string;
if (!daily[day]) {
daily[day] = [];
}
daily[day].push(data);
});
return daily;
}
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