Published
Edited
Sep 7, 2021
3 stars
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
error = (((estimate - actual) / actual) * 100).toFixed(3) + '%'
Insert cell
Insert cell
Insert cell
height = Math.max(size + 15, 45)
Insert cell
fontDescriptor = `${style.concat(['']).join(' ')}${size}px ${font}`
Insert cell
Insert cell
getTextWidth = function (text) {
context.font = fontDescriptor;
var metrics = context.measureText(text);
return metrics.width;
}
Insert cell
magicNumber = {
let magicArray = Object.entries({
" ": 20000,
...englishFrequenciesRaw
}).reduce(
(arr, [letter, length]) => [
...arr,
...Array.from({ length }, (_, i) =>
i % 10 == 0 ? letter : letter.toLowerCase()
)
],
[]
);

shuffle(magicArray);
return getTextWidth(magicArray.join("")) / magicArray.length;
}
Insert cell
Insert cell
Insert cell
params = new URL(document.baseURI).searchParams
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