我期待创建一个这样的图表 - 它显示了水平面上的各种不同关系。d3.js系列圆形图表
所以我设想中的数据会看起来像这样
[{
"name": "Twitter",
"vistsperday": "15 billion",
"employeecount": 450
}, {
"name": "Facebook",
"vistsperday": "5 billion",
"employeecount": 2000
}, {
"name": "Google",
"vistsperday": "5 billion",
"employeecount": 25000
}, {
"name": "Netflix",
"vistsperday": "10 billion",
"employeecount": 2200
}, {
"name": "Ebay",
"vistsperday": "8 billion",
"employeecount": 17700
}, {
"name": "Klout",
"vistsperday": "2 billion",
"employeecount": 45
}]
我已经在这里开始的jsfiddle。 从https://bost.ocks.org/mike/circles/推导 - 三个小圆圈 *最新小提琴 - http://jsfiddle.net/NYEaX/1425/
- 我有第一个问题 - 是阵列中所有的数据必须是不同的价值观,否则圈子将不会呈现
- 如何缩小这些圈子 - 我试图调整cx公式,但没有影响。
这里是最新的小提琴的代码的当前结构。
//代码
$(document).ready(function() {
var rawData = [{
"name": "Twitter",
"vistsperday": "15 billion",
"employeecount": 450
}, {
"name": "Facebook",
"vistsperday": "5 billion",
"employeecount": 2000
}, {
"name": "Google",
"vistsperday": "5 billion",
"employeecount": 25000
}, {
"name": "Netflix",
"vistsperday": "10 billion",
"employeecount": 2200
}, {
"name": "Ebay",
"vistsperday": "8 billion",
"employeecount": 17700
}, {
"name": "Klout",
"vistsperday": "2 billion",
"employeecount": 45
}];
var width = 700;
var height = 500;
var margin = {
top: 20,
right: 100,
bottom: 30,
left: 100
}
//serieschart
var svg = d3.select(".serieschart").append("svg")
.attr("class", "serieschart")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var bluedata = [5000,2000,2000,1600,701,1603];
//blue layer
var bluelayer = svg.append("g")
.attr("class", "bluelayer")
var bluecircle = bluelayer.selectAll("circle")
.data(bluedata);
bluecircle.enter().append("circle")
.attr("class", "blue")
.attr("cy", 60)
.attr("cx", function(d, i) {
return (i * 60) + 10;
})
.attr("r", function(d) {
return Math.sqrt(d);
});
bluecircle.exit().remove();
var golddata = [32, 57, 293,31, 455, 296];
//gold layer
var goldlayer = svg.append("g")
.attr("class", "goldlayer")
var goldcircle = goldlayer.selectAll("circle")
.data(golddata);
goldcircle.enter().append("circle")
.attr("class", "gold")
.attr("cy", 60)
.attr("cx", function(d, i) {
return (i * 60) + 10;
})
.attr("r", function(d) {
return Math.sqrt(d);
});
goldcircle.exit().remove();
});
return(i * 60)+10; - 我认为目标是从100 –
var bluecircle = bluelayer.selectAll(“circle”) .data(bluedata,function(d){ return d; }); - 将其更改为var bluecircle = bluelayer.selectAll(“circle”) .data(bluedata); –
你的意思是你想要动态地减少cx的每个圆圈?你能解释一下吗? – mkaran