JSFiddle - React, Tailwind, and code Playground
HTML
<div class="section system-efficiency">
<h4>SYSTEM EFFICIENCY</h4>
</div>
CSS
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.line {
fill: none;
stroke: black;
stroke-width: 1.5px;
shape-rendering: crispEdges;
}
.x.axis path {
display: none;
}
.x.axis text {
font-size: 12px;
}
JavaScript
var data = [
{
"air_produced": 0.660985,
"air_used": 0.342706,
"datestr": "2012-12-01 00:00:00",
"energy_used": 0.106402
},
{
"air_produced": 0.824746,
"air_used": 0.400776,
"datestr": "2013-01-01 00:00:00",
"energy_used": 0.250462
},
{
"air_produced": 0.181898,
"air_used": 0.003541,
"datestr": "2013-02-01 00:00:00",
"energy_used": 0.000582
},
{
"air_produced": 1.096685,
"air_used": 0.97719,
"datestr": "2013-03-01 00:00:00",
"energy_used": 0.923212
},
{
"air_produced": 0.283379,
"air_used": 0.241088,
"datestr": "2013-04-01 00:00:00",
"energy_used": 0.23381
}
];
// Margins and widths.
var graph_width = parseInt(d3.select('body').style('width').replace('px',''));
var margin = {top: 20, right: 20, bottom: 30, left: 0},
width = graph_width - margin.left - margin.right,
height = 200 - margin.top - margin.bottom;
// X and Y scales.
var x = d3.time.scale().range([0, width]);
var y = d3.scale.linear().range([height, 0]);
// Construct our SVG object.
var svg = d3.select(".system-efficiency").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 + ")");
// X-axis.
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
// Date parsing.
var parseDate = d3.time.format("%Y-%m-%d %H:%M:%S");
// Line function.
var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.energy_used); });
// Draw x-axis.
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain([0, d3.max(data, function(d) { return d.air_used; })]);
d3.select(".x.axis")
.transition().duration(1000)
.call(xAxis);
// Draw line.
var line...