JSFiddle - React, Tailwind, and code Playground
by Ryan Bentham
HTML
<div id="chart" ></div>
CSS
/* set the CSS */
body { font: 12px Arial;}
path {
stroke: steelblue;
stroke-width: 2;
fill: none;
}
.axis path,
.axis line {
fill: none;
stroke: grey;
stroke-width: 1;
shape-rendering: crispEdges;
}
JavaScript
var margin = {top: 20, right: 10, bottom: 60, left: 50},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var x0 = d3.scale.ordinal()
.rangeRoundBands([0, width], 0.4);
var x1 = d3.scale.ordinal();
var y = d3.scale.linear()
.range([height, 0]);
var color = d3.scale.ordinal()
.range(["#FC654C", "#CCCCCC"]);
var xAxis = d3.svg.axis()
.scale(x0)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickFormat(d3.format(".2s"));
var svg = d3.select("#chart").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var data = [
{ xx: "A", A: "10", B: "15", C: "19" },
{ xx: "B", A: "12", B: "18", C: "9" },
{ xx: "C", A: "05", B: "20", C: "5" },
{ xx: "D", A: "01", B: "15", C: "7" },
{ xx: "E", A: "02", B: "10", C: "13" }
];
var data2 = d3.keys(data[0]).filter(function(key) { return key == "A" || key == "B" ; });
data.forEach(function(d) {
d.dataNew = data2.map(function(name) {
//console.log(name + ':' + d[name]);
return {
name: name,
value: +d[name]
};
});
});
x0.domain(data.map(function(d) { return d.xx; }));
x1.domain(data2).rangeRoundBands([0, x0.rangeBand()]);
y.domain([0, d3.max(data, function(d) { return d3.max(d.dataNew, function(d) { return d.value; }); })]);
// add y-axis title
svg.append("text")
.attr("text-anchor", "middle")
.attr('class', 'axis')
.attr("transform", "translate("+ (-margin.left/1.75) +","+(height/2)+")rotate(-90)")
.text("Share(%)");
// add y-axis label
svg.append("g")
.attr("class", "y axis")
.call(d3.svg.axis().scale(y).orient("left"));
// add x-axis title
svg.append("text")
.attr('class', 'axis')
...