2013-05-22 2 views
3

Я пытаюсь создать сложный график моделирования интересов, который для каждой кредитной карты позволит пользователям изменять (через слайдер) сумму денег, которую они платят каждый месяц, и видеть, что отражается в экспоненциальном функциональный график - поскольку они увеличивают количество ползунков, где экспоненциальная кривая встречается с верхней осью (годом), раньше долг будет погашен.d3 сложный процентный долг

Было бы лучше перерисовать экспоненциальную функцию на sliderchange или создать json для инкрементного количества и перехода по каждому из них? Я не видел много примеров экспоненциальной функции d3.

+0

Я не уверен, что понимаю, что вы спрашиваете? Вы хотите узнать относительные достоинства создания нового пути каждый из объектов по сравнению с точками обновления в существующем пути каждый в элементе? – Superboggly

+0

Это именно то, что я имел в виду, я закончил тем, что обновил путь и отлично работал. – alan

ответ

0

Я не могу сказать, что это лучшее решение, но если бы я делал это, вот, как я мог бы идти о нем:

Мои предположения, что

  1. Сложный процент рассчитывается на основе на некоторый интервал (я думаю, ежемесячно для кредитных карт)
  2. На графике будет отображаться общая сумма (задолженность) в будущем, скажем, 10 лет.

Исходя из этого, мы можем придумать количество точек на график, например. 120 (10 лет 12 месяцев).

Затем, с помощью простого цикла, я бы создать 120-элементный массив null S A:

var points = [null, null, null, null, null, null.....null, null]; // 120 null's 

Тогда я создать генератор строки, которая вычисляет X и Y на основе индекса в массив. Значение, поскольку цель состоит в том, чтобы запустить что-то вроде этого:

d3.select('svg') 
    .append('path') 
    .attr('d', lineGenerator(points))// points are the array of nulls 

, то я бы создать генератор строку:

var lineGenerator = d3.svg.line() 
    .x(function(d, i) { 
    // return a date value calculated as function of i 
    }) 
    .y(function(d, i) { 
    // return a compound interest "future value" as a function of i 
    }) 

Дело в том, что этот путь, когда пользователь изменяет Params (через слайдер) нет необходимости перестраивать массив точек (если только количество точек не должно меняться, и в этом случае я бы добавил/удалил null s). Даже функции, переданные в генераторы линейного генератора x() и y(), изменять не нужно - изменять только параметры (т. Е. Варсы), которые используются внутри этих функций для вычисления результата.

+0

спасибо, мне удалось сгенерировать весь набор данных, а затем обновить путь onchange. – alan

Смежные вопросы