// equivalent to d3.scaleLinear().domain([0, 1]).range([-1, +1]).invert
tanh=((slope)=>(x)=>Math.tanh(slope*x))(7)// slop fixed at 7 gives best result in this example
// dampen: see https://observablehq.com/@martien/linearize-a-log-movement
dampen=R.pipe(unitCircle,tanh,unitCircleInvert)
// n, for nano
n=(x)=>x*1e-9
µ=(x)=>x*1e-6;
k=(x)=>x*1e3;
import{columns}from"@martien/inputs"
R=require("ramda")
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.