d3.scale нужен для приведения значения из одного диапазона в соответствие другому диапазону. Например, у тебя есть диапазон значений возраста 0–50 лет (domain), а тебе нужно отобразить все эти значения на экране в виде прямоугольников с шириной в диапазоне 0—300 пикселей (range). Здесь и требуется scale:
d3.scaleLinear().domain([0, 50]).range([0, 300])
В твоем случае высота прямоугольников должна быть одинаковая, поэтому здесь нужен scaleBand. Или нужно просто вычислить эту высоту прямоугольника самостоятельно.
В целом, присоединяюсь к предыдущему оратору, у d3 очень хорошая документация. Читай её:
https://github.com/d3/d3/wiki