d3 v4平行坐标用d3 v4画笔选择路径

时间:2018-03-16 21:12:35

标签: javascript d3.js svg brush parallel-coordinates

我正在尝试实现类似于此的图表 -

https://bl.ocks.org/syntagmatic/05a5b0897a48890133beb59c815bd953

在d3 v4中。 所以我在这里找到了这个库 -

https://github.com/syntagmatic/parallel-coordinates

最初是用d3 v4编写的,所以我找到了一个部分移植的d3 v4版本她 -

https://github.com/mlarosa2/parcoords

为此,在使用这个库和我的一些自定义之后,我已经达到了这一点 -

http://blockbuilder.org/iamdeadman/9e7c89d21c7dc1ce1b13b1ceb931c9eb

因此,如果您打开块,您可以看到我无法再在y轴上绘制画笔。 我相信这是因为这个库中有一些d3.dispatch事件问题。

这些是我必须在<html> <head> <link rel="stylesheet" href="style.css"> <link rel="icon" type="image/png" href="http://marcopolo0306.github.io/content/images/icon.png"> </head> <body> <a class="clicker" id="clicker" href="#"> Click for Money </a> <div class="main-content"> <h2 id="para">Money: 0</h2> <script type="text/javascript"> document.getElementById("clicker").onclick= function(){ update(2) }; //document.cookie = "money="+money, time() + (10 * 365 * 24 * 60 * 60); var money = parseFloat(0); function update (amount) { console.log(parseFloat(amount)) money += parseFloat(amount); console.log(money); document.getElementById("para").innerHTML="Money: " + parseFloat(amount); return false; } </script> </div> </body> </html>中进行的更改才能生成至少一个正在运行的演示 -

mlarosa2/parcoords ---- to ---&gt; d3.svg.brush();

d3.brush()

已更改 -

brush.y(__.dimensions[axis].yscale)
.on("brushstart", function() {
if(d3.event.sourceEvent !== null) {
events.brushstart.call(pc, __.brushed);
d3.event.sourceEvent.stopPropagation();
}}).on("brush", function() {
brushUpdated(selected());}).on("brushend", function() {
events.brushend.call(pc, __.brushed);});

----to--->

brush.extent(__.dimensions[axis].yscale)
.on("start", function() {if(d3.event.sourceEvent !== null) {
// events.call('brushstart', pc, __.brushed);
events.brushstart.call(pc, __.brushed);
d3.event.sourceEvent.stopPropagation();
}})
.on("brush", function() {
brushUpdated(selected());
})
.on("end", function() {
// events.call('brushend', pc,__.brushed);
events.brushend.call(pc, __.brushed);
});

var brush = g.append("svg:g") .attr("class", "brush") .each(function(d) { d3.select(this).call(brushFor(d)); }); ----to---> var brush = g.append("svg:g") .attr("class", "brush") .each(function(d) { try {d3.select(this).call(brushFor(d));} catch(e){} }); 更改为d3.svg.arc()

最后改变了 -

d3.arc()

有人可以建议任何更改/有用的提示来查找/调试下面的问题, 这样我们就可以创造出来将选择应用于y轴,如https://bl.ocks.org/syntagmatic/05a5b0897a48890133beb59c815bd953和d3 v4。

https://bl.ocks.org/iamdeadman/raw/9e7c89d21c7dc1ce1b13b1ceb931c9eb/78e688e476259ffd85de091a1c17804a1d87d7ba/

- 更新 -

因此,在尝试了paracoords.js中的几个更改后,我们能够创建画笔手柄,但在移动时,画笔会刷新所有数据,而不是刷新选定的点。 我相信刷子设置有一些错误,这就是为什么在刷拉事件调用中无法访问所选点的原因。

任何人都可以看看这个问题&amp;帮助看看是否可以解决这个问题。

1 个答案:

答案 0 :(得分:0)

这不能直接解决您的问题,但是Parcoords(移植到d3 v5)的最新版本是https://github.com/BigFatDog/parcoords-es。我认为使用此版本不应该出现此问题。截至2018年11月,此仓库正在积极开发中。