【发布时间】:2014-12-12 04:53:26
【问题描述】:
我正在关注 D3 上的给定教程 bar chart -2
我在两个函数中设置了我的代码,一个是 init,一个是 update
var xScale = null;
var chart = null;
function init(w, c) {
xScale = d3.scale.linear()
.range([0, w]);
chart = d3.select(c)
.append('svg')
.attr('width', w);
function update(data) {
xScale.domain([0, d3.max(data, function(d) { return +d.value; })]);
chart.attr('height', 20 * data.length);
var bars = chart.selectAll('g')
.data(data);
bars.exit().remove();
bars.enter().append('g')
.attr('transform', function(d, i) { return 'translate(0,' + i * 20 + ')'; });
bars.append('rect')
.attr('width', function(d) { return xScale(+d.value); })
.attr('height', 18);
bars.append('text')
.attr('x', function(d) { return xScale(+d.value); })
.attr('y', 10)
.attr('dy', '.45em')
.text(function (d) { return d.name; });
}
当我第一次调用更新时,条形图已正确创建,在后续更新调用时,它会在标签下创建矩形和文本元素而不是更新
我的数据是一个字典 {'name': a, 'value': 12, .....} 每次更新的元素数量可以不同。每次更新中可能有相同的键(名称)具有不同的值
【问题讨论】:
-
在 fiddle 或 plunkr 上添加您的代码
标签: javascript d3.js