How to format axis labels in Observable Plot
Today I learnt …
Observable Plot is a JavaScript library for producing charts and other data visualisations. Given an array named data
that contains objects each with date
and positivityRate
keys, you can create a line chart with code like this:
;
The tickFormat
option used in the y scale above is powerful. You can pass it a function or you can use a ‘format specifier’. Plot includes a handful of formatting functions, Plot.formatIsoDate
, Plot.formatWeekday
, and Plot.formatMonth
, or you can use your own (receive a value, return a formatted string).
A format specifier is a string that describe how you want Plot to format your labels. Plot supports the specifiers from d3-format
, for formatting numbers, or d3-time-format
, for formatting dates and times. The string used above, ".0%"
, says ‘round to the nearest integer, multiply by 100, and add a percent sign suffix’. Thus 0.123
becomes 12%
. Another useful specifier is ~s
, which trims insignificant trailing zeros — the number 1500
would be formatted as 1.5k
. The format specifiers available from d3-time-format
are less directly useful, if only because Plot uses them internally to label date and time axes automatically.