更新d3.js组中的数据
Update data in d3.js group
我创建了一个具有数据值的组:
var group = svg.append("g");
group.data([{color : "green", opacity: 0.3 }]);
如果我想更新这些值,我需要设置一个新的数据数组吗?
group.data([{color : "blue", opacity: 0.3 }]);
或者我可以以某种方式迭代和更新组内的值,比如:
group.data.foreach(d, function() { return d.color = "blue"; })
或
group.data.foreach(d, function() { return d.opacity += 0.5; })
我的用例是,我有一个由矩形和圆形组成的组。这个小组有数据。
var group = svg.append("g");
group.data([{color : "green", opacity: 0.3 }]);
var line = group.append("rect");
line.attr("x", self.xWorldToGraph(xx) - self.lineWidth / 2)
.attr("y", self.yWorldToGraph(yy))
.attr("width", self.lineWidth)
.attr("height", height)
.style("stroke", function(d) { return d.color; })
.style('stroke-opacity', function(d) { return d.opacity; })
group.append("circle")
.attr("cx", self.xWorldToGraph(xx))
.attr("cy", self.yWorldToGraph(yy))
.attr("r", 50)
.style("stroke", function(d) { return d.color; })
.style('stroke-opacity', function(d) { return d.opacity; })
现在我想更新组的颜色,这样圆形和矩形也会改变颜色。
d3
不会"自动"重绘。您必须通过再次调用.style函数来"告诉"它数据已经更改(在enter、update、exit模式中,这是一次更新)。
下面是一个使用代码的示例:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
</head>
<body>
<script>
var svg = d3.select('body')
.append('svg')
.attr('width', 500)
.attr('height', 500);
var group = svg.append("g");
group.data([{
color: "green",
opacity: 0.3
}]);
group.append("circle")
.attr("cx", 100)
.attr("cy", 100)
.attr("r", 50)
.style("stroke-width", 30)
.style("stroke", function(d) {
return d.color;
})
.style('stroke-opacity', function(d) {
return d.opacity;
});
var colors = d3.scale.category20();
var i = 0;
function changeColor() {
group.data().forEach(function(d) {
d.color = colors(i);
});
group.selectAll('circle').style("stroke", function(d) {
return d.color;
})
i++;
}
setInterval( changeColor, 1000 );
</script>
</body>
</html>
相关文章:
- d3.hexbin插件-动态定义颜色域以适应数据
- 如何为d3.js图表输出组织/嵌套数据
- 添加新数据时D3.JS条形图列偏移量
- 将基本CSV数据加载到D3
- 具有关联数组数据集的D3.js表
- d3在数据更新时错误地附加了dom元素
- d3.csv有很多数据,只画了一个月
- 基本D3.js:使用数据键
- 基本D3.js:如何将具有其他属性的数据绑定到元素
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 通过内部数组将JSON数据导入D3.js+Google Map
- 具有多个数据集的分组散点图D3
- 如何使用D3.js根据json中给出的数据在Heatmap中创建可变大小的矩形
- 基于数据d3.js绑定svg梯度
- 其中存储有数据d3
- 如何动态更改力布局图中的数据?D3.
- 将 MySQL 查询结果转换为分层数据 - D3
- 使用复选框过滤数据- D3
- 更新enter().append()块中的数据d3.js
- 同时转换xAxis和数据- D3.js