Last active
August 29, 2015 14:24
-
-
Save kcsluis/b357bc064e8000b88471 to your computer and use it in GitHub Desktop.
Modern Lib. 100 — Scatter Plot Sketches
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<style type="text/css"> | |
body { | |
font-family: arial, sans; | |
font-size: 9px; | |
width: 960px; | |
margin: 40px auto; | |
} | |
svg { | |
border: 1px solid #f0f; | |
} | |
.axis path { | |
display: none; | |
} | |
.yAxis .tick line { | |
stroke: #ddd; | |
} | |
.xAxis .tick line { | |
stroke: #ddd; | |
} | |
</style> | |
<body> | |
<h1>Author and Book Data Comparisons</h1> | |
</body> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" charset="utf-8"></script> | |
<script type="text/javascript"> | |
var margin = {top: 40, right: 40, bottom: 40, left: 40}; | |
var width = 960 - margin.left - margin.right, | |
height = 500 - margin.top - margin.bottom; | |
var xScale = d3.scale.linear() | |
.range([0,width]); | |
var yScale = d3.scale.linear() | |
.range([height,0]); | |
d3.tsv("books_authors.tsv", ready); | |
function ready(error, data) { | |
if (error) return console.warn(error); | |
console.log(data); | |
data.forEach(function(d) { | |
d.AGE_BOOK = +d.AGE_BOOK; | |
d.AGE_FIRST_NOVEL = +d.AGE_FIRST_NOVEL; | |
d.BORN = +d.BORN; | |
d.DIED = +d.DIED; | |
d.EDITORS_WIKI = +d.EDITORS_WIKI; | |
d.FIRST_NOVEL = +d.FIRST_NOVEL; | |
d.LIFESPAN = +d.LIFESPAN; | |
d.RANKING = +d.RANKING; | |
d.WIKIPEDIA_VIEWS = +d.WIKIPEDIA_VIEWS; | |
d.YEAR_BOOK = +d.YEAR_BOOK; | |
}); | |
function letsGraph(xData, yData) { | |
var svg = d3.select("body").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 xAxis = d3.svg.axis() | |
.scale(xScale) | |
.tickSize(-height) | |
.tickPadding(2) | |
.tickFormat(d3.round) | |
// important for year formatting | |
.orient("bottom"); | |
var yAxis = d3.svg.axis() | |
.scale(yScale) | |
.tickSize(-width) | |
.tickPadding(2) | |
.tickFormat(d3.round) | |
.orient("right"); | |
xScale.domain(d3.extent(data, function(d) { return d[xData]; })); | |
yScale.domain(d3.extent(data, function(d) { return d[yData]; })); | |
svg.append("g") | |
.attr("class", "axis xAxis") | |
.attr("transform", "translate(0," + height +")") | |
.call(xAxis); | |
svg.append("g") | |
.attr("class", "axis yAxis") | |
.attr("transform", "translate(" + width +",0)") | |
.call(yAxis); | |
var circleGroup = svg.selectAll(".circleGroup") | |
.data(data) | |
.enter() | |
.append("g") | |
.attr("class", ".circleGroup") | |
.attr("transform", function (d) { return "translate(" + xScale(d[xData]) + "," + yScale(d[yData]) + ")"; }) | |
.attr("title", function (d) { return d.BOOK; }); | |
circleGroup.append("circle") | |
.attr("r", 5); | |
svg.append("text") | |
.attr("transform", "translate(4,10)") | |
.text( function (d) { return xData + " v. " + yData; }); | |
}; | |
letsGraph("RANKING", "YEAR_BOOK"); | |
letsGraph("RANKING", "AGE_BOOK"); | |
letsGraph("RANKING", "LIFESPAN"); | |
letsGraph("RANKING", "EDITORS_WIKI"); | |
letsGraph("RANKING", "WIKIPEDIA_VIEWS"); | |
letsGraph("EDITORS_WIKI", "YEAR_BOOK"); | |
letsGraph("EDITORS_WIKI", "AGE_BOOK"); | |
letsGraph("EDITORS_WIKI", "LIFESPAN"); | |
letsGraph("WIKIPEDIA_VIEWS", "YEAR_BOOK"); | |
letsGraph("WIKIPEDIA_VIEWS", "AGE_BOOK"); | |
letsGraph("WIKIPEDIA_VIEWS", "LIFESPAN"); | |
}; | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment