{
const m = d3.min(
d3.pairs(
d3.sort(Plot.valueof(fakeData, "date")),
(a, b) => Math.round((b - a) / 60000)
)
);
const interval =
m < 2
? d3.utcMinute
: m < 10
? d3.utcMinute.every(m)
: m < 60
? d3.utcMinute.every(m)
: m < 23 * 60
? d3.utcHour.every(Math.round(m / 60))
: m < 23 * 60 * 7
? d3.utcDay
: m < 24 * 60 * 27
? d3.utcWeek
: m < 24 * 60 * 364
? d3.utcMonth
: d3.utcYear;
return Plot.rectY(fakeData, {
x: "date",
y: "value",
interval
}).plot({
title: "Fil's solution",
subtitle: "I think it works"
});
}