Я хочу, чтобы создать список, используя D3, используя следующие данные:d3: обновление набора данных не обновляя DOM
var dataSet = [
{ label: 'a', value: 10},
{ label: 'b', value: 20},
{ label: 'c', value: 30},
{ label: 'd', value: 40}
];
var circle = svg.selectAll('circle')
.data(dataSet)
.enter()
.append('circle')
.attr({
r:function(d){ return d.value },
cx:function(d, i){ return i * 100 + 50 },
cy:50,
fill: 'red'
});
, который работает. Теперь по прошествии некоторого времени, я могу изменить данные
dataSet[0].value = 40;
dataSet[1].value = 30;
dataSet[2].value = 20;
dataSet[3].value = 10;
, и я хотел бы еще раз обратить список:
setTimeout(function() {
var circle = svg.selectAll('circle')
.data(dataSet, function (d) {
return d.label;
})
.sort(function (a,b){ return d3.ascending(a.value, b.value);})
.enter()
.append('circle')
.attr({
r:function(d){ return d.value },
cx:function(d, i){ return i * 100 + 50 },
cy:50,
fill: 'red'
});
},1000);
Однако этот список действительно не обновляется. Любые предложения, как это исправить?
Ваша скрипка не работает, поэтому я исправил это [здесь] (http://jsfiddle.net/Q5Jag/1193/) Thnx –
@JeanlucaScaljeri Я оставил '.sort()', потому что это то, что вы имели в своей оригинальной скрипке. Наверное, имеет смысл без него, хотя :) –