我正在尝试创建一个复合兴趣建模图,对于每张信用卡,它将允许用户修改(通过滑块)他们每个月支付的金额,并查看反映在指数函数图中的金额 - 因为它们会增加滑块数量,指数曲线会更快地达到顶轴(年),债务将很快得到偿还。
重新绘制sliderchange上的指数函数或创建json以获取增量和过渡时更好吗?我还没有看到很多d3指数函数的例子。
答案 0 :(得分:0)
我不能说这是最好的解决方案,但如果我这样做,我可以采用以下方式:
我的假设是
基于此,我们可以提出要绘制的点数,例如: 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>