//氣泡圖基地。 http://jsfiddle.net/NYEaX/1450/
我想通過改變它們的比例來動畫氣泡 - 如果可能的話,淡入淡出。在某個階段,我需要用某種重力將它們聚集在一起,以佔據更多的周圍環境。
(function() {
var diameter = 250;
var svg = d3.select('#graph').append('svg')
.attr('width', diameter)
.attr('height', diameter);
var bubble = d3.layout.pack()
.size([diameter, diameter])
.value(function(d) {
return d.size;
})
.padding(3);
var color = d3.scale.ordinal()
.domain(["Lorem ipsum", "dolor sit", "amet", "consectetur", "adipisicing"])
.range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56"]);
function randomData() {
var data1 = {
"children": [
{
name: "AA",
className: "aa",
size: 170
},
{
name: "BB",
className: "bb",
size: 393
},
{
name: "CC",
className: "cc",
size: 293
},
{
name: "DD",
className: "dd",
size: 89
}
]
};
var data2 = {
"children": [
{
name: "AA",
className: "aa",
size: 120
},
{
name: "BB",
className: "bb",
size: 123
},
{
name: "CC",
className: "cc",
size: 193
},
{
name: "DD",
className: "dd",
size: 289
}
]
};
var j = Math.floor((Math.random() * 2) + 1);
console.log("j", j);
if (j == 1) {
return data1;
} else {
return data2;
}
}
change(randomData());
d3.select(".randomize")
.on("click", function() {
change(randomData());
});
function change(data) {
console.log("data", data);
// generate data with calculated layout values
var nodes = bubble.nodes(data)
.filter(function(d) {
return !d.children;
}); // filter out the outer bubble
var vis = svg.selectAll('circle')
.data(nodes);
vis.enter()
.insert("circle")
.attr('transform', function(d) {
return 'translate(' + d.x + ',' + d.y + ')';
})
.attr('r', function(d) {
return d.r;
})
.style("fill", function(d) {
return color(d.name);
})
.attr('class', function(d) {
return d.className;
});
vis
.transition().duration(1000)
vis.exit()
.remove();
};
})();
我有氣泡動畫 - 但它仍然不是正確的http://jsfiddle.net/NYEaX/1457/ –
HTTP: //jsfiddle.net/NYEaX/1458/ –
氣泡= bubbles.transition() \t \t \t \t \t \t \t .transition() \t \t \t \t \t \t \t .duration(2000) \t \t \t \t \t \t \t .attr( '變換',函數(d){ \t \t \t \t \t \t返回 '翻譯(' + DX + '' + DY +' )'; \t \t \t \t \t \t}) \t \t \t \t \t \t \t .attr( 'R',函數(d){ \t \t \t \t \t \t \t //console.log("dr」,DR) \t \t \t \t \t \t return d。R等 \t \t \t \t \t \t}) \t \t \t \t \t \t \t .ease( '弦') –