Published
Edited
Nov 21, 2020
Importers
Insert cell
md`# String Utils`
Insert cell
d3 = require("d3@5")
Insert cell
function formatNumber(x) {
return d3.format(',')(x);
}
Insert cell
function formatNumberHuman(x) {
const METRIC = ['', 'K', 'M', 'B', 'T', 'P', 'E'];
let i = 0;
while (i < METRIC.length) {
if (x < 1000) {
return d3.format(".3")(x) + METRIC[i];
}
i += 1;
x /= 1000;
}
return 'too large';
}
Insert cell
formatNumberHuman(1)
Insert cell
formatNumberHuman(12)
Insert cell
formatNumberHuman(120)
Insert cell
formatNumberHuman(1234)
Insert cell
formatNumberHuman(12345)
Insert cell
function formatPercent(p) {
if (p < 0.005 && p > 0) {
return '<1%';
}
return d3.format('.0%')(p);
}
Insert cell
function toTitleCase(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
Insert cell
function formatLatLng(latLng) {
if (!latLng) {
return '';
}
const [lat, lng] = latLng;
const r = x => d3.format('.4f')(x);
return `${r(lat)}N, ${r(lng)}E`;
}
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