forked from negiDharmendra/juice
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsugarCharts.js
More file actions
53 lines (48 loc) · 1.71 KB
/
sugarCharts.js
File metadata and controls
53 lines (48 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var sugarPerJuice = {};
var data = [];
d3.json("./juice_orders.json", function(d) {
data = d;
data.forEach(function(juice){sugarPerJuice[juice.drinkName] = {withSugar:0, sugarLess:0 }});
data.forEach(function(juice){
if(juice.isSugarless)
sugarPerJuice[juice.drinkName].sugarLess = sugarPerJuice[juice.drinkName].sugarLess +1
sugarPerJuice[juice.drinkName].withSugar = sugarPerJuice[juice.drinkName].withSugar+1;
})
Object.keys(sugarPerJuice).forEach(function(juice){visualizeIt(sugarPerJuice[juice],juice)});
});
var visualizeIt = function(data,juice){
var w = 200;
var h = 200;
var r = h/2-10;
var color = d3.scale.category20c();
var vis = d3.select('#chart')
.data([Object.keys(data)])
.append("div")
.attr("class","fruit")
.text(juice)
.append("svg")
.attr("width", w)
.attr("height", h)
.append("g")
.attr("transform", "translate(" + r + "," + r+ ")")
var pie = d3.layout.pie().value(function(d){
return data[d]
});
var arc = d3.svg.arc().outerRadius(r);
var arcs = vis.selectAll("g.slice").data(pie).enter().append("svg:g").attr("class", "slice");
arcs.append("path")
.attr("fill", function(d, i){
return color(i);
})
.attr("d", function (d) {
return arc(d);
});
arcs.append("svg:text").attr("transform", function(d){
d.innerRadius = 0;
d.outerRadius = r;
return "translate(" + arc.centroid(d) + ")";}).attr("text-anchor", "middle").text( function(d, i) {
var total = data.withSugar + data.sugarLess;
return Math.round((d.value/total) * 100) + "%";}
).attr("fill","white")
.attr("font-size","11");
}