这个问题是关于d3 v5的。
对于我来说,D3似乎不认识关键函数中的值。例如:
// first create 5 elements
var data = d3.range(0,5);
var g = d3.select('svg')
.append('g').selectAll("text")
.data(data, d=>d+"_a"); // append value "a"
console.log(`new ${g.enter().size()} update ${g.size()}
我是D3新手,我找到的大多数示例都是针对v3的。正在尝试更新代码以使用联接模式,但无法使其正常工作。它是这样的:
[...]
let link = svg.append("g").attr("class", "links").selectAll("path");
let node = svg.append("g").selectAll("g");
function update() {
node = node
.data(nodes)
.join("g", e
我正在尝试使用新的D3 范例在每个svg中绘制一个随机定位的圆圈。虽然我可以在选择器中使用I来实现这一点,但是我还没有成功地使用选择器的类。因为我没有与每个圆或svg相关联的数据,所以我只是合成一个长度为所选元素的数量的数组。我已经注释掉了返回enter和update选择器,因为启用它们会导致异常:
TypeError: r.compareDocumentPosition is not a function
at Pt.order (https://cdnjs.cloudflare.com/ajax/libs/d3/5.15.1/d3.min.js:2:14333)
at Pt.join (h
我试图制作一个热图,其中x和y单元格值可以保持不变,但是“填充”属性可以根据数据进行更改。我试过这样做:
var tiles = svg.selectAll('rect')
.data(data.values, function(d) {return d.mt_aa+':'+d.position_aa;})
// set up the enter/update/exit block
tiles.join(
function(enter) {
return enter
我有一个词云,可以过滤日期范围和感情。有时会有更多的数据,有时会更少。当我删除数据时,更新dom,然后添加被删除的元素不会返回的数据。使用d3js版本3.4.13
var width = 600, height = 200;
var words = ["Hello", "world", "Wonderful"];
//inserting text
var wcwords = d3.select("#wordcloud")
.attr("width", width)
我可以完美地加载和显示数据一次,但是任何更新尝试似乎都失败了。
我在试着建立一张显示活动的地图。在我的数据csv中,我有纬度、逻辑和活动时间(0-23)。我正在使用更新D3中的新数据。我的想法是按小时循环数据。
我或多或少偷了更新功能。虽然初始调用运行良好,但任何重复调用都只能重新着色已经存在的数据,而不是删除数据并添加新数据。这使我相信我并没有改变输入的数据。
我的更新电话有什么明显的问题吗?
function update(data, x) {
// DATA JOIN
// Join new data to any existing data
var circle
我正在使用D3创建反应性可视化。每当数据发生变化时,我发现自己经常使用这种模式:
function redraw(myData) {
// if data points decreased, remove some rectangles
d3.selectAll('rect')
.data(myData)
.exit()
.remove();
// if data points increased, add some rectangles
d3.selectAll('rect')
我是d3的初学者。我读到,当一个人将$n$实体的数据集绑定到一个元素,调用enter,然后执行操作时,这些操作将被执行$n$次。
然而,在这里,我的段落只被追加了3次,即使我的数据集的大小是4:
d3.select("body").data([1, 2, 3, 4]).enter().append("p").text("g");
输出:
g
g
g
为什么只有3次?