我刚刚从d3.js开始,并复制了d3.js v3的示例,并试图将其修改为v4。我有以下代码:
var width = 960,
height = 500,
fill = d3.schemeCategory20;
// another code
var force = d3.forceSimulation()
.size([width, height]) // the error occurred at this row
.nodes([{}])
.linkDistance(50)
.charge(-200)
.on("tick", tick);
在d3.js v4中,嵌套选择似乎不像过去那样起作用。
这起作用(在v3中):
var data = [["1-a", "1-b"], ["2-a", "2-b"]];
var tbody = d3.select("tbody");
var row = tbody.selectAll("tr").data(data);
row.exit().remove();
row.enter().append("tr");
var cell = row.selectAll("td&
我有一个用d3.js v4构建的分组列图。当用户单击单个图表时,其他图表将变得不可见,以突出显示单击的图表。现在我有一个可用性问题:当图表很短的时候,点击它有点太难了,所以我想检测一下图表上面所有部分的点击。
function onSelectSingleBarChart(d, i, j) {...
这是。
我试图用d3.js 复制用d3.js v4编写的示例v3,因为我的应用程序很旧,不能更改库。但是,当我试图使用旧版本运行它时,我会得到以下错误:
d3.select(...).transition(...).duration(...).on is not a function
在这里提到了同样的问题,但遗憾的是,它并没有解释如何用v3复制这个示例。尽管我确实了解到问题在于transition.on()对v4来说是新的。
所以有人能帮我把这个例子移植回v3吗?
var format = d3.format(",d");
d3.select("h1")
.
var selectZoom = d3.brush().extent([[0, 0], [WIDTH, HEIGHT]])
.on("brush",brush)
.on("end", brushended);
function brush(){
var selection = d3.event.selection;
console.log(selectZoom.extent()); // this prints function
我已经读过这些答案了,但我不能解决: Adapt old geo to D3 v5, how to express a queue of Promise? d3.js v5 - Promise.all replaced d3.queue 我在d3 v4中的代码如下所示 d3.queue()
.defer(d3.json, "path/file.json")
.defer(populate,map,data)
.await(ready);
}
function populate(map,data,callback) {
.. code ..
callback
就像你们中的许多人一样,我在将我的遗留代码转换为D3.js v4时遇到了一些困难。现在我遇到了一个问题,我找不到文档,也找不到如何修复它。
这是我的原始代码:
我设法将它转换为:
但现在我被困住了
d3.stack().offset('wiggle').values(function(d)
返回一个错误,
d3.stack(...).offset(...).values is not a function
帮助弄清楚正确的语法应该是什么,如果你也看到任何其他需要转换的东西,请让我知道。
在d3.js V4中,d3.vent.y给出了SVG元素中的事件y位置,但是我需要事件的位置,就像它在G元素中的位置一样。例如,如果鼠标位于G元素的顶部而不是d3.vent.y,则应该为零。但在我的尝试中,如果鼠标位于SVG元素的顶部,则只有零。这是我的尝试: --试着把‘水’线上下拖。这条输水线和鼠标拖来的是不匹配的。我的SVG将按照页面的宽度进行缩放,所以我不能硬编码值。
D3 V4代码:
var high = null;
d3.select('#bfG').call(
d3.drag().on('start', function () {
//