javascript - 如何向 enter.append 中使用的 d3 数据集添加新元素?

标签 javascript d3.js

我有以下只有文本和颜色信息的数据集

var inputs = [{"text": "inleaf1", "col": "red"}, {"text": "inleaf2", "col": "blue"}, {"text": "inleaf3", "col": "green"}];

下面是用来绘制带有文本元素的矩形

            var inputleaf = container.selectAll("rect")
                    .data(data)
                    .enter().append("rect")
                    .attr("class", "input-leaf")
                    .attr("width", elementwidth)
                    .attr("height", elementheight)
                    .attr("x", startX)
                    .attr("y", function (d, i) {
                        return startY + ((elementheight + verticalmargin) * i);
                    })
                    .attr("stroke-width", "2")
                    .attr("fill", "none")
                    .attr("stroke", function (d) {
                        return d.col;
                    })
                    .call(function (d) {
                       //--------------------add position details to the data set
                    });

            var inputtext = container.selectAll("text")
                    .data(data)
                    .enter().append("text")
                    .attr("x", startX + elementwidth / 10)
                    .attr("y", function (d, i) {
                        return startY + (elementheight / 2) + ((elementheight + verticalmargin) * i);
                    })
                    .text(function (d) {
                        return d.text;
                    });

在迭代过程中,如何向数据集添加更多属性,例如职位详情。基本上我想更新数据集。

最佳答案

这是一种解决方案,也许不是最好的解决方案:在设置 attr 时更新数据。例如:

.attr("y", function (d, i) {
      var y = i * 10;
       inputs[i].y = y // or d.y = y
       return y;
})

参见 this fiddle

关于javascript - 如何向 enter.append 中使用的 d3 数据集添加新元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39246855/

相关文章:

javascript - 找不到模块 '../build/Release/bson' ] 代码 : 'MODULE_NOT_FOUND' } js-bson: Failed to load c++ bson extension, 使用纯 JS 版本

Javascript - 从当前网址中删除查询字符串

javascript - 更改 d3.format 用于 'g' 类型的符号

d3.js - 在 Brushmove 而不是 Brushend 上渲染 dc.js 图表

javascript - 如何在d3中的平行坐标图中为线条着色?

javascript - 服务器发送事件与 websockets?

javascript - Node.js 和模块作用域 : Most Efficient Way to Read Files into Memory

javascript - 动态 Twitter 卡片图片

javascript - d3 可重复使用的直方图

javascript - d3js 重叠元素 : how to "pass through" clicks to "lower" element?