Public
Edited
Oct 12, 2024
Insert cell
Insert cell
Insert cell
Insert cell
data = {
const students = d3.range(50);
const data = {
name: students.map(() => faker.person.fullName()),
grade: students.map(() => 100 - d3.randomPoisson(20)())
};
return aq.table(data);
}
Insert cell
Insert cell
Insert cell
Insert cell
fiveNumNaive = (data, columnName) => {
const sortedData = data.orderby(columnName);
return {
minimum: sortedData.get(columnName, 0),
maximum: sortedData.get(columnName, 49),
median: sortedData.get(columnName, 24),
firstQ: sortedData.get(columnName, 12),
thirdQ: sortedData.get(columnName, 36)
};
}
Insert cell
fiveNumNaive(data, "grade")
Insert cell
Insert cell
fiveNumNaiveArbIdx = (data, columnName) => {
const sortedData = data.orderby(columnName);
const last = sortedData.numRows() - 1;
return {
minimum: sortedData.get(columnName, 0),
maximum: sortedData.get(columnName, last),
median: sortedData.get(columnName, Math.floor(0.5 * last)),
firstQ: sortedData.get(columnName, Math.floor(0.25 * last)),
thirdQ: sortedData.get(columnName, Math.floor(0.75 * last))
};
}
Insert cell
fiveNumNaiveArbIdx(data, "grade")
Insert cell
Insert cell
Insert cell
fiveNumOpsWithClosures = (data, columnName) => {
return data.rollup({
// Comment the median line out to get this function to work,
// but it will only return the maximum.
median: (d) => op.median(d.column(columnName)),
// NOTE `d.grade`!
maximum: (d) => op.max(d.grade)
});
}
Insert cell
fiveNumOpsWithClosures(data, "grade").view()
Insert cell
Insert cell
Insert cell
fiveNumOpsFinal = (data, columnName) => {
return data.rollup({
minimum: op.min(columnName),
maximum: op.max(columnName),
median: op.median(columnName),
firstQuartile: op.quantile(columnName, 0.25),
thirdQuartile: op.quantile(columnName, 0.75)
});
}
Insert cell
fiveNumOpsFinal(data, "grade").view()
Insert cell
Insert cell
mapExample = {
return [1, 2, 3].map((n, i, ado) => d);
}
Insert cell
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