Built with blockbuilder.org
forked from hyonschu's block: fresh block
forked from hyonschu's block: Tufte slopegraph
Built with blockbuilder.org
forked from hyonschu's block: fresh block
forked from hyonschu's block: Tufte slopegraph
<!DOCTYPE html> | |
<html> | |
<head><meta charset="UTF-8"> | |
<title>Page Titles</title> | |
<script src = "https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script> | |
<script src = 'lib/underscore-min.js'></script> | |
<style> | |
.axis path, .yaxis path { fill: none; shape-rendering: auto; } | |
.axis text, .yaxis text, .notes{ font-family: "Times"; font-size: 12px; color: black;} | |
.labels { font-family: serif; font-size: 11px; color: black;} | |
</style> | |
</head> | |
<body> | |
<script> | |
// create new JSON file {year: x, values: y} | |
d3.csv('https://raw.githubusercontent.com/hyonschu/data/master/cancer_survival_rates.csv', function(csv) { | |
var dataset = [] | |
for (var i=0; i<csv.length; i++) { | |
// console.log(data[i]) | |
dataset.push( csv[i] ) | |
} | |
// layout variables | |
var pad = 50; | |
var hh = 1200; | |
var ww = 600; | |
var listed=[]; | |
var tmplist=[]; | |
var ten=[]; | |
var fifteen=[]; | |
var twenty=[]; | |
var xmarks=[0,175,275,375,475] | |
// CREATE SVG CANVAS | |
var canvas = d3.select('body') | |
.append('svg').attr({'height': hh,'width': ww }) | |
// CREATE SCALES TO AUTO ADJUST USING D3.SCALE | |
var xscale = d3.scale.linear() | |
.range([pad,ww-pad]).domain([0,100]) | |
var yscale = d3.scale.linear() | |
.range([hh-pad,pad]).domain([0,100]) | |
// LETS TRY DRAWINGSOME PATHS YALL | |
canvas.selectAll('leftlabels') | |
.data(dataset) | |
.enter() | |
.append('text') | |
.text(function(d) {return d['group']}) | |
.attr({ | |
'class': 'labels', | |
'y': function(d) { | |
// var tmplist = []; | |
var tmp = Math.round(d[5]) | |
if (tmplist.indexOf(tmp)>=0) { | |
while (tmplist.indexOf(tmp)>=0) { | |
tmp++ | |
} | |
tmplist.push(tmp) } | |
else { | |
tmplist.push(tmp) | |
} | |
return yscale(tmplist[tmplist.length-1]) | |
}, | |
'x': xmarks[0] | |
}) | |
// 'text-anchor':'end', | |
// 'text-align': 'right' | |
canvas.selectAll('five') | |
.data(dataset) | |
.enter() | |
.append('text') | |
.text(function(d,i) {return (d[5])}) | |
.attr({ | |
'class': 'labels', | |
'y': function(d,i) { | |
return yscale(tmplist[i])}, | |
'x': xmarks[1], | |
}) | |
canvas.selectAll('ten') | |
.data(dataset) | |
.enter() | |
.append('text') | |
.text(function(d) {return d3.round(d[10], 1)}) | |
.attr({ | |
'class': 'labels', | |
'y': function(d) { | |
// var tmplist = []; | |
var tmp = Math.floor(d[10]) | |
if (ten.indexOf(tmp)>=0) { | |
while (ten.indexOf(tmp)>=0) { | |
tmp++ | |
} | |
ten.push(tmp) } | |
else { | |
ten.push(tmp) | |
} | |
return yscale(ten[ten.length-1]) | |
}, | |
'x': xmarks[2], | |
}) | |
canvas.selectAll('fifteen') | |
.data(dataset) | |
.enter() | |
.append('text') | |
.text(function(d) {return d3.round(d[15],1)}) | |
.attr({ | |
'class': 'labels', | |
'y': function(d) { | |
// var tmplist = []; | |
var tmp = Math.floor(d[15]) | |
if (fifteen.indexOf(tmp)>=0) { | |
while (fifteen.indexOf(tmp)>=0) { | |
tmp++ | |
} | |
fifteen.push(tmp) } | |
else { | |
fifteen.push(tmp) | |
} | |
return yscale(fifteen[fifteen.length-1]) | |
}, | |
'x': xmarks[3], | |
}) | |
canvas.selectAll('twenty') | |
.data(dataset) | |
.enter() | |
.append('text') | |
.text(function(d) {return d3.round(d[20],1)}) | |
.attr({ | |
'class': 'labels', | |
'y': function(d) { | |
// var tmplist = []; | |
var tmp = Math.floor(d[20]) | |
if (twenty.indexOf(tmp)>=0) { | |
while (twenty.indexOf(tmp)>=0) { | |
tmp++ | |
} | |
twenty.push(tmp) } | |
else { | |
twenty.push(tmp) | |
} | |
return yscale(twenty[twenty.length-1]) | |
}, | |
'x': xmarks[4], | |
}) | |
var line = d3.svg.line() | |
.x(function(d) {console.log(d) ; return d; }) | |
.y(function(d) { return d }); | |
// array=[1,3,4,6,7,45,746,5,6] | |
canvas.selectAll("path") | |
.data(dataset).enter() | |
.append("path") | |
.attr("d", function(d) { | |
line.x(d[5]) | |
line.y(d[10]) | |
console.log(d) | |
}) // replacing line with M0,0l100,100 draws a line | |
.attr("class", "line") | |
.style("stroke", "black" ) | |
.attr('fill', 'none'); | |
}) | |
// console.log(dataset) | |
</script> | |
</body> | |
</html> |