我想轉換我創建的條形圖的寬度。問題是在過渡期間,酒吧從0增長到n。我怎樣才能讓酒吧成長或縮小到寬度的新價值?這是我的jsfiddle ... http://jsfiddle.net/LAG2r/2/試圖使d3js轉換縮小或增長到下一個值
var codes = d3.range("A".charCodeAt(0), "Z".charCodeAt(0)).concat(d3.range("a".charCodeAt(0), "z".charCodeAt(0))),
chars = [];
codes.forEach(function (c) {
var chr = String.fromCharCode(c);
chars.push(chr);
});
function random(size) {
var string = '',
len = chars.length,
start = Math.floor(Math.random() * len);
return d3.shuffle(chars.slice(start, start + size)).join('');
}
function createData(size) {
var data = [];
for (var i = 0; i < size; i++) {
data.push({
name: random(6),
value: Math.random() * 1000
});
}
return data;
}
var svg = d3.select('#yo').append('svg:svg').append('g:svg');
var x = d3.scale.linear()
.domain([0, 1000])
.range([0, 490])
.nice();
var y = d3.scale.ordinal()
.domain(d3.range(50))
.rangeRoundBands([0, 490], .2);
setInterval(function() {
var dataTarget = svg.selectAll(".bar")
.data(createData(50), function (d) {
return d.name;
});
dataTarget.exit().remove();
dataTarget.enter().append("rect")
.attr("class", "bar")
.attr("height", y.rangeBand())
.attr("y", function (d, i) {
return y(i);
})
.attr("x", function (d, i) {
return x(Math.min(0, d.value));
})
.transition()
.attr("width", function (d, i) {
return d.value;
});
}, 2000);
你似乎遇到了同樣的問題我看到:http://stackoverflow.com/q/15651056/173225。我試圖將更新選項添加到您的小提琴中,但它仍然會每次替換所有生成的DOM元素。 – 2013-03-27 17:20:41