<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
font: 10px sans-serif;
}
svg {
padding: 10px 0 0 10px;
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var colors = d3.scale.category10();
var radius = 80,
padding = 10;
// set up our 3 arcs
var arcs = [
d3.svg.arc()
.outerRadius(radius)
.innerRadius(radius - 8),
d3.svg.arc()
.outerRadius(radius - 10)
.innerRadius(radius - 18),
d3.svg.arc()
.outerRadius(radius - 20)
.innerRadius(radius - 28)
];
// given this csv data
var csv = `Company,score_A,score_B,score_C
Natural Health Trends,10,50,70
Vipshop,90,23,76
Facebook,34,46,87`;
// clean up data
var data = d3.csv.parse(csv, function(d){
return {
score_A: +d.score_A,
score_B: +d.score_B,
score_C: +d.score_C,
company: d.Company
}
});
// an svg for every set of arcs
var svg = d3.select("body").selectAll(".pie")
.data(data)
.enter().append("svg")
.attr("class", "pie")
.attr("width", radius * 2)
.attr("height", radius * 2)
.append("g")
.attr("transform", "translate(" + radius + "," + radius + ")");
// text in center
svg.append("text")
.attr("dy", ".35em")
.style("text-anchor", "middle")
.text(function(d) { return d.company; });
// a g for gray and colored arcs
var g = svg.selectAll(".arc")
.data(function(d){
return [d.score_A, d.score_B, d.score_C];
})
.enter()
.append("g");
// gray portion just run 100 %
g.append("path")
.attr("d", function(d,i){
return arcs[i]({
startAngle: 0,
endAngle: (2 * Math.PI)
});
})
.style("fill", "lightgray");
// colored portion
g.append("path")
.attr("d", function(d,i){
return arcs[i]({
startAngle: 0,
endAngle: (d/100) * (2 * Math.PI)
});
})
.style("fill", function(d,i){
return colors(i);
});
</script>
かなり驚き、ありがとうマーク! はい、コードははるかに簡単で美しいです。 –