Skip to content

Instantly share code, notes, and snippets.

@cliff145
Created September 26, 2015 17:29
Show Gist options
  • Select an option

  • Save cliff145/922e7cb40962c975b394 to your computer and use it in GitHub Desktop.

Select an option

Save cliff145/922e7cb40962c975b394 to your computer and use it in GitHub Desktop.
Module 6 - Renewable Energy
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Renewable Energy Line Graph</title>
<script type="text/javascript" src="http://d3js.org/d3.v3.js"></script>
<style type="text/css">
body {
background-color: white;
font-family: Helvetica, Arial, sans-serif;
}
h1 {
font-size: 24px;
margin: 0;
}
p {
font-size: 14px;
margin: 10px 0 0 0;
}
svg {
background-color: white;
}
line:hover {
fill: #79007F;
}
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 11px;
}
</style>
</head>
<body>
<h1>Renewable Energy Production</h1>
<p>The United States&rsquo; and Spain&rsquo;s renewable energy production as a percentage of total energy production, 2002-2012. Source: <a href="https://data.oecd.org/energy/renewable-energy.htm">OECD</a>, 2015</p>
<script type="text/javascript">
var w = 700;
var h = 600;
var padding = [ 20, 10, 50, 100 ]; //Top, right, bottom, left
//Set up date formatting and years
var dateFormat = d3.time.format("%Y");
var xScale = d3.time.scale()
.range([ padding[3], w - padding[1] - padding[3] ]);
var yScale = d3.scale.linear()
.range([ padding[0], h - padding[2] ]);
//Configure axis generators
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(15)
.tickFormat(function(d) {
return dateFormat(d);
});
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.tickFormat(function(d) {
return d + "%";
});
//Configure line generator
var line = d3.svg.line()
.x(function(d) {
return xScale(dateFormat.parse(d.year));
})
.y(function(d) {
return yScale (d.energy);
});
//Create the empty SVG image
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
//load USA data
d3.csv("usaenergy.csv", function(usaData) {
//load Spain data
d3.csv("spainenergy.csv", function(spainData) {
//Create a new array that contains both the
//USA and Spain data, merged into one
var mergedData = usaData.concat(spainData);
//console.log(mergedData);
//Use the newly merged data to determine the
//min and max values, for setting scale domains
xScale.domain([
d3.min(mergedData, function(d) {
return dateFormat.parse(d.year);
}),
d3.max(mergedData, function(d) {
return dateFormat.parse(d.year);
})
]);
yScale.domain([
d3.max(mergedData, function(d) {
return +d.energy;
}),
0
]);
svg.data([ usaData ])
.append("path")
.attr("class", "line usa")
.attr("d", line)
.attr("fill", "none")
.attr("stroke", "steelblue")
.attr("stroke-width", 2);
svg.data([ spainData ])
.append("path")
.attr("class", "line china")
.attr("d", line)
.attr("fill", "none")
.attr("stroke", "red")
.attr("stroke-width", 2);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + (h - padding[2] + 10) + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + (padding[3] - 10) + ",0)")
.call(yAxis);
});
//End Spain data load function
});
//End USA data load function
</script>
</body>
</html>
year energy
2002 5.4
2003 6.9
2004 6.3
2005 5.9
2006 6.5
2007 7
2008 7.6
2009 9.7
2010 11.7
2011 11.7
2012 11.9
year energy
2002 4
2003 4.3
2004 4.4
2005 4.5
2006 4.8
2007 4.7
2008 5.1
2009 5.4
2010 5.6
2011 6.1
2012 6.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment