xxxxxxxxxx
<meta charset="utf-8">
<head>
<script src="https://d3js.org/d3.v4.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Raleway" rel="stylesheet">
<script src="https://binaworks.github.io/scripts/d3-container.v0.0.1.min.js"></script>
</head>
<style>
/* work to emulate this style https://projects.fivethirtyeight.com/trump-approval-ratings/?ex_cid=rrpromo */
#container {
width: 960px;
}
h1 {
font-family: "Raleway";
font-weight: 700;
color: #222;
}
h2 {
font-family: "Raleway";
font-weight: 300;
color: #222;
}
footer {
font-family: "Raleway";
color: #000
}
.line {
fill: none;
stroke-width: 2px;
}
#source {
float: left;
}
#author {
float: right;
}
#poultryPath {
fill: none;
stroke: #7EB2D4;
stroke-width: 2px;
}
#beefPath {
fill: none;
stroke: #B5DFD0;
stroke-width: 2px;
}
#porkPath {
fill: none;
stroke: #DEDCEA;
stroke-width: 2px;
}
</style>
<body>
<div id="container">
<h1>Poultry consumption has been flying high since 1989</h1>
<h2>US per capita consumption from 1965 to 2017</h2>
<footer>
<div id="source">SOURCE | National Chicken Council</div>
<div id="author">DESIGN | @robcrock for #MakeoverMonday</div>
</footer>
</div>
<!-- D3 CODE -->
<script>
var outerContainer = d3_container.container()
.width(960)
.height(500);
var innerContainer = d3_container.container().margin(20);
var svg = d3.select("h2")
.append("svg");
svg.call(outerContainer);
var content = outerContainer.content();
content.call(innerContainer);
var g = innerContainer.content(),
innerWidth = innerContainer.contentWidth(),
innerHeight = innerContainer.contentHeight(),
innerMarginLeft = innerContainer.margin().left();
var x = d3.scaleLinear()
.range([0, innerWidth]);
var y = d3.scaleLinear()
.range([innerHeight, 0]);
var xAxis = d3.axisBottom(x)
.tickFormat(d3.format(""));
var yAxis = d3.axisLeft(y);
// Create seperate path generators for each line
var poultryPath = d3.line()
.x(function(d) { return x(d.year); })
.y(function(d) { return y(d.poultry); });
var beefPath = d3.line()
.x(function(d) { return x(d.year); })
.y(function(d) { return y(d.beef); });
var porkPath = d3.line()
.x(function(d) { return x(d.year); })
.y(function(d) { return y(d.pork); });
// Get the data
d3.csv("data.csv", function(error, data) {
if (error) throw error;
x.domain(d3.extent(data, function(d) { return d.year; }));
y.domain([0, d3.max(data, function(d) {
return Math.max(d.poultry); })]);
// Add the X Axis
g.append("g")
.attr("class", "x axis")
.attr("transform", "translate(" + innerMarginLeft + "," + innerHeight + ")")
.call(xAxis);
// Add the Y Axis
g.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + innerMarginLeft + ",0)")
.call(yAxis);
// Append individual lines
g.append("path")
.data([data])
.attr("id", "beefPath")
.attr("d", beefPath)
.attr("transform", "translate(" + innerMarginLeft + ",0)");
g.append("path")
.data([data])
.attr("id", "porkPath")
.attr("d", porkPath)
.attr("transform", "translate(" + innerMarginLeft + ",0)");
g.append("path")
.data([data])
.attr("id", "poultryPath")
.attr("d", poultryPath)
.attr("transform", "translate(" + innerMarginLeft + ",0)");
});
</script>
</body>
Modified http://binaworks.github.io/scripts/d3-container.v0.0.1.min.js to a secure url
https://d3js.org/d3.v4.min.js
https://binaworks.github.io/scripts/d3-container.v0.0.1.min.js