我期待創建一個這樣的圖表 - 它顯示了水平面上的各種不同關係。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