【发布时间】:2017-08-21 21:06:10
【问题描述】:
这将如何适应叠加第二组圆圈?
var data = [{
"name": "Twitter",
"items": [{
"value": 2000
}, {
"value": 3000
}]
}, {
"name": "Facebook",
"items": [{
"value": 200
}, {
"value": 300
}]
}, {
"name": "Ebay",
"items": [{
"value": 1000
}, {
"value": 2000
}]
}, {
"name": "Foursquare",
"items": [{
"value": 2000
}, {
"value": 3000
}]
}]
可以选择添加其他数据集 - 目标是创建一个 2D 金字塔,其中不同颜色的圆圈代表不同的数据集 - 最大的数据集作为基圆。
http://jsfiddle.net/0aqvx66j/4/
function circleMaker() {
var counter = 0;
series = 0
var set = svg.append("g")
.attr("class", "series" + series);
set.selectAll("circle")
.data(data)
.enter().append("circle")
.attr("class", "series" + series)
.attr("cy", 60)
.attr("cx", function(d, i) {
if (i) {
return (counter += Math.sqrt(data[i - 1].items[series].value) + Math.sqrt(data[i].items[series].value));
} else {
return counter;
}
})
.attr("fill", function(d, i) {
var colorArray = ["#00ccff", "#fcdd0a"];
return colorArray[series];
})
.attr("r", function(d) {
return Math.sqrt(d.items[series].value);
});
}
最终甚至可能在不同的数据集之间翻转,以始终将最大的圆圈作为背景。就这样
【问题讨论】:
-
second set of circles是items数组中的第二个值吗? -
当然 -- { "name": "Twitter", "items": [{ "value": 2000 }, { "value": 3000 }
-
想法是——如果我们添加第三组——然后显示 3 个圆圈,但是——以最大的圆圈为基础,然后像 2D 金字塔一样构建它。
-
这是您应该在问题中包含的重要信息。
标签: javascript d3.js