我对 Javascript 和 d3 真的很陌生,并且仍在尝试围绕语法进行思考。
我的可视化包含一条线 ( svg:line
) 和一个叠加的动态直方图。该线路目前是固定的;直方图可以更新。我正在尝试找出该行的类似更新以及如何访问它。
函数直方图 (...) { this.create = function() { ... this.targetPDF = 数组(1,2,3); this.vis = d3.select(divID) .append("svg:svg") .attr(“类”,“vis2chart”) .attr("宽度", width2) .attr("高度", height2); ... 那=这; this.densityKernel = d3.svg.line() .x(function(d,i) { return that.xxTarget(i); }) .y(function(d) { return that.yy2(d); }); this.vis.append("svg:path").attr("d", that.densityKernel(that.targetPDF)); }; this.reset = function() { // 这里是我想通过 exit() 或 transform() 更新行的地方 }; }
我的语法都不起作用,所以不值得发布它。我不知道为什么我觉得这很困难。
编辑:很抱歉,我没有将其简化为基本要素——部分原因是不确定基本要素是什么。为了回应下面的评论,我正在粘贴yy2
以下代码xxTarget
。他们正在重新调整函数,我怀疑他们的定义与行更新的代码无关:
this.yy2 = d3.scale.linear()
.domain([0, that.maxDensity + d3.max([plotMargin * that.maxDensity, 0.05])])
.range([(1 - xmf.xxbMarginFactor) * height2, xmf.xxtMarginFactor * height2]);
this.xxTarget = d3.scale.linear()
.domain([0, numLineSegments])
.range([xmf.yylMarginFactor * width2, (1 - xmf.yyrMarginFactor) * width2]);
编辑这里是一些语法的尝试,遵循d3 中的动画折线图示例。该函数在 Histogram 类函数中定义。这似乎可行,但恐怕我会以某种方式搞砸范围……建议表示赞赏。
this.redrawDynamically = function() {
this.vis.selectAll("path")
.data(hist.targetPDF)
.attr("d", hist.densityKernel(hist.targetPDF))
.transition()
.ease("linear")
.duration(100)
};
这个想法是调用redrawDynamically()
。reset()