var svg = d3.select("svg"), width = +500, height = +200, radius = Math.min(width, height) / 2, g = svg.append("g").attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); var labels = d3.select("#labels"); var color = d3.scaleOrdinal(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00", "#e34d01", "#ccff05", "#3e7eca", "#aa0092", "#b32e4f"]); var pie = d3.pie() .sort(null) .value(function(d) { return d.market_cap; }); var path = d3.arc() .outerRadius(radius - 10) .innerRadius(0); var outerArc = d3.arc() .innerRadius(radius * 0.9) .outerRadius(radius * 0.9); var label = d3.arc() .outerRadius(radius - 40) .innerRadius(radius - 40); var csvData = "currency,market_cap\n"; csvData += "Ethereum,28479743440\n"; csvData += "Ripple,8082383399\n"; csvData += "Bitcoin Cash,8767760760\n"; csvData += "Litecoin,3642098421\n"; csvData += "NEM,2514744000\n"; csvData += "Dash,2363329943\n"; csvData += "IOTA,1706859515\n"; csvData += "Ethereum Classic,1539824432\n"; csvData += "NEO,1138990000\n"; csvData += "Monero,1761024916\n"; csvData += "Stratis,569824176\n"; csvData += "Bitcoin,70807286162\n"; var data = d3.csvParse(csvData); data.forEach(function(d) { d.market_cap = +d.market_cap; return d; }); var arc = g.selectAll(".arc") .data(pie(data)) .enter().append("g") .attr("class", "arc"); arc.append("path") .attr("d", path) .attr("fill", function(d) { return color(d.data.currency); });
<!DOCTYPE html> <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.3.0/d3.min.js"></script> </head> <svg width="700" height="400"> <g id="labels" /> </svg> </html>