Я работаю над пенсионным калькулятором/гистограммой с d3.js. Я построил гистограмму для отображения статического массива, а затем соединил диаграмму с моим уравнением выхода на пенсию.
Когда я подключил свою диаграмму к своему калькулятору, мой yScale был не прав, хотя входные массивы были одинаковыми. Я исправил это, изменив это:
const yScale = d3.scaleLinear().domain([0, d3.max(fvArr,(d)=>d[1])]).range([height-padding,0]);
к этому:
const yScale = d3.scaleLinear().domain([0, d3.max(fvArr,(d)=>d[1]*1)]).range([height-padding,0]);
Почему это работает? Codepen здесь.
Проблема в том, что ваши данные содержат строки, а не числа.
Если вы посмотрите на массив fvArr
вы увидите это:
[[0, "30000"], [1, "32800"], [2, "35768"] etc...]
Итак, что умножение здесь делает, это просто приводит результат к числу. Проверь это:
console.log(typeof("5" * 1))
Это то же самое, что использование унарного плюса, что более распространено:
console.log(typeof(+"5"))
typeof d[1]
? Если это строка, возможно,Number(d[1])
исправит это.