d3复利债务

时间:2013-05-22 16:38:11

标签: javascript d3.js visualization

我正在尝试创建一个复合兴趣建模图,对于每张信用卡,它将允许用户修改(通过滑块)他们每个月支付的金额,并查看反映在指数函数图中的金额 - 因为它们会增加滑块数量,指数曲线会更快地达到顶轴(年),债务将很快得到偿还。

重新绘制sliderchange上的指数函数或创建json以获取增量和过渡时更好吗?我还没有看到很多d3指数函数的例子。

1 个答案:

答案 0 :(得分:0)

我不能说这是最好的解决方案,但如果我这样做,我可以采用以下方式:

我的假设是

  1. 复利计算基于某个时间间隔(我猜信用卡每月一次)
  2. 图表将显示未来几年的总金额(欠款),比方说10年。
  3. 基于此,我们可以提出要绘制的点数,例如: 120(10年12个月)。

    然后,通过一个简单的循环,我将创建一个由null组成的120元素数组:

    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来自它。即使传递给线生成器的x()y()方法的函数也不必更改 - 只有在这些函数中用于计算输出的参数(即变量)必须更改。 / p>