我正在尝试创建一个复利建模图,对于每一张信用卡,它将允许用户修改(通过滑块)他们每月支付的金额,并将其反映在指数函数图中--当他们增加滑块数量时,指数曲线与顶轴(年份)相交时,债务将提前还清。
在sliderchange上重画指数函数还是为增量和过渡创建json更好?我还没有见过很多d3指数函数的例子。
发布于 2013-05-23 06:02:23
我不能说这是最好的解决方案,但如果我这样做,我可能会这样做:
我的假设是
在此基础上,我们可以得出要绘制的点数,例如120 (10年乘12个月)。
然后,通过一个简单的循环,我将创建一个包含120个元素的null
数组:
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
})
重点在于,当用户更改参数(通过滑块)时,不需要重新构建点数组(除非点的数量必须更改,在这种情况下,我会在其中添加/删除null
s )。即使是传递到行生成器的x()
和y()
方法中的函数也不必更改--只需更改这些函数中用于计算输出的参数(即var)。
https://stackoverflow.com/questions/16697202
复制相似问题