Created
June 16, 2014 04:51
-
-
Save hyonschu/040ebb341ef3a1c4aac3 to your computer and use it in GitHub Desktop.
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> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<title>Dark Souls II Body Armor Comparison</title> | |
<style type="text/css"> | |
.yaxis path, | |
.yaxis line, | |
.xaxis path, | |
.xaxis line { | |
fill: none; | |
stroke: #AAA; | |
shape-rendering: crispEdges; | |
} | |
.yaxis, | |
.xaxis { | |
font-family: sans-serif; | |
font-size: 11px; | |
fill: #999; | |
} | |
.titlex { | |
font-family: sans-serif; | |
font-size: 14px; | |
fill: orange; | |
} | |
</style> | |
<script type="text/javascript" src="d3.min.js"></script> | |
</head> | |
<body bgcolor="black"> | |
<div style="text-align:center;" class="mainchart" width='50'> | |
<h1 style="color: gray; text-align:center; font-family:Georgia; font-size:32px">Dark Souls II Body Armor Comparison</h1> | |
<script type="text/javascript"> | |
// load the csv file! | |
var width = 720 | |
var height = 280 | |
var dataset | |
var padding = 22 | |
d3.csv("body.csv", function(data) { | |
data.forEach(function(d) { | |
d.Phys = +d.Phys; | |
d.Weight = +d.Weight; | |
d.Poise = +d.Poise; | |
d.Dur = +d.Dur; | |
d.Mag = +d.Mag; | |
d.Fire = +d.Fire; | |
d.Light = +d.Light; | |
d.Dark = +d.Dark; | |
d['Total Defense'] = +d['Total Defense']; | |
}); | |
durD = [0, 0.73537253793028479, 255, 28.412505932894664] | |
totalD =[0, -3.8152939360143563, 1559, 21.764254501971635] | |
physD = [0, -1.2297935879109552, 437, 22.496383451350237] | |
poiseD = [0, 4.0077181112133058, 47.0, 21.730141021739236] | |
magD = [0, 9.4949059782753427, 135, 6.0664293336673314] | |
dataset=data; | |
var color = d3.scale.category10(); | |
var xsc = d3.scale.linear().range([padding, width-padding]).domain([0, d3.max(data, function(d) { return d.Phys; })]) | |
var ysc = d3.scale.linear().range([padding, height-padding]).domain([0, d3.max(data, function(d) { return d.Weight; })]) | |
//Define X axis | |
var xAxis = d3.svg.axis() | |
.scale(xsc) | |
.orient("bottom") | |
//Define Y axis | |
var yAxis = d3.svg.axis() | |
.scale(d3.scale.linear().range([height-padding,0]).domain([0, d3.max(data, function(d) { return d.Weight; })])) | |
.orient("left") | |
.ticks(5) | |
//generating charts | |
var charts = d3.select(".mainchart") | |
.append("svg") | |
.attr({ | |
"height": height, | |
"width": width | |
}) | |
// generate title | |
var titleX = d3.selectAll("svg") | |
.append("text") | |
.text("Physical Defense x Weight") | |
.attr({ | |
'x': 30, | |
'y': 15, | |
"fill": "white", | |
"class": "titlex" | |
}) | |
//Create X axis | |
charts.append("g") | |
.attr("class", "xaxis") | |
.attr("transform", "translate(0,"+(height-padding)+")") | |
.call(xAxis); | |
//Create Y axis | |
charts.append("g") | |
.attr("class", "yaxis") | |
.attr("transform", "translate("+padding+",0)") | |
.call(yAxis); | |
charts.append("line") | |
.data(data) | |
.attr("class", "regress") | |
.style("stroke", "pink") | |
.style("stroke-width", 2) | |
.attr("x1", xsc(physD[0])) | |
.attr("x2", xsc(physD[2])) | |
.attr("y2", height-ysc(physD[3])) | |
.attr("y1", height-ysc(physD[1])) | |
charts.selectAll("circle") | |
.data(data) | |
.enter() | |
.append("circle") | |
.attr("cx", function(d) { return xsc(d.Phys) } ) | |
.attr("cy", function(d) { return height-ysc(d.Weight)} ) | |
.attr("r", 5) | |
.attr("opacity", 0.4) | |
.style("fill", function(d) { return color(d.Reinforcement)}) | |
// .style("stroke", function(d) { | |
// if (d.Effect != "") | |
// {return "yellow"} | |
// else {return "none"} | |
// }) | |
.on("mouseover", function(d) { | |
d3.select(this).attr("r", 10).attr("opacity", 1); | |
}) | |
.on("mouseout", function(d) { | |
d3.select(this).attr("r", 4).attr("opacity", 0.4) }) | |
.append("svg:title") | |
.text( | |
function(d) { | |
if (d.Effect == "") | |
{return d.Name} | |
else | |
{return d.Name + '\n • '+ d.Effect; }; | |
}); | |
// .style("stroke", function(d) { | |
// if (d.Effect != "") | |
// {return "yellow"} | |
// else {return "none"} | |
// }) | |
//Phys | |
d3.select(".phys") | |
.on("click", function(){ | |
xsc = d3.scale.linear().range([padding, width-padding]).domain([0, d3.max(data, function(d) { return d.Phys; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { | |
return xsc(d.Phys) | |
}) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis); | |
charts.select(".regress") | |
.transition() | |
.attr("x1", xsc(physD[0])) | |
.attr("x2", xsc(physD[2])) | |
.attr("y2", height-ysc(physD[3])) | |
.attr("y1", height-ysc(physD[1])) | |
.style("stroke", "pink") | |
titleX.text("Physical Defense x Weight") | |
}) | |
//Total Defense | |
d3.select(".totaldef") | |
.on("click", function(){ | |
xsc = d3.scale.linear().range([padding, width-padding]).domain([0, d3.max(data, function(d) { return d['Total Defense']; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis); | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d['Total Defense']) } ) | |
charts.selectAll(".regress") | |
.transition() | |
.attr("x1", xsc(totalD[0])) | |
.attr("x2", xsc(totalD[2])) | |
.attr("y2", height-ysc(totalD[3])) | |
.attr("y1", height-ysc(totalD[1])) | |
.style("stroke", "pink") | |
titleX.text("Sum: All Defense x Weight") | |
}); | |
//POISE | |
d3.select(".poise") | |
.on("click", function(){ | |
xsc = d3.scale.linear().range([padding, width-padding]) | |
.domain([0, d3.max(data, function(d) { return d.Poise; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis); | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d.Poise) } ) | |
charts.select(".regress") | |
.transition() | |
.attr("x1", xsc(poiseD[0])) | |
.attr("x2", xsc(poiseD[2])) | |
.attr("y2", height-ysc(poiseD[3])) | |
.attr("y1", height-ysc(poiseD[1])) | |
.style("stroke", "pink") | |
titleX.text("Poise x Weight") | |
}); | |
// DURABILITY | |
d3.select(".dur") | |
.on("click", function(){ | |
xsc = d3.scale.linear().range([padding, width-padding]) | |
.domain([0, d3.max(data, function(d) { | |
return d.Dur; | |
})]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis); | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d.Dur) } ) | |
charts.select(".regress") | |
.transition() | |
.attr("x1", xsc(durD[0])) | |
.attr("x2", xsc(durD[2])) | |
.attr("y2", height-ysc(durD[3])) | |
.attr("y1", height-ysc(durD[1])) | |
.style("stroke", "pink") | |
titleX.text("Durability x Weight") | |
}) | |
//MAG DEF | |
d3.select(".mag") | |
.on("click", function(){ | |
xsc = d3.scale.linear().range([padding, width-padding]) | |
.domain([0, d3.max(data, function(d) { return d.Mag; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis); | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d.Mag) } ) | |
charts.select(".regress").transition() | |
.attr("x1", xsc(magD[0])) | |
.attr("x2", xsc(magD[2])) | |
.attr("y2", height-ysc(magD[3])) | |
.attr("y1", height-ysc(magD[1])) | |
.style("stroke", "pink") | |
titleX.text("Magic Defense x Weight") | |
}); | |
//fire | |
d3.select(".fire") | |
.on("click", function(){ | |
xsc = d3.scale.linear() | |
.range([padding, width-padding]).domain([0, d3.max(data, function(d) { return d.Fire; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis) | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d.Fire) } ) | |
charts.select(".regress").transition().style("stroke", "black") | |
titleX.text("Fire Defense x Weight") | |
}); | |
//light | |
d3.select(".light") | |
.on("click", function(){ | |
xsc = d3.scale.linear() | |
.range([padding, width-padding]).domain([0, d3.max(data, function(d) { return d.Light; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis) | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d.Light) } ) | |
charts.select(".regress").transition().style("stroke", "black") | |
titleX.text("Lightning Defense x Weight") | |
}); | |
//dark | |
d3.select(".dark") | |
.on("click", function(){ | |
xsc = d3.scale.linear() | |
.range([padding, width-padding]).domain([0, d3.max(data, function(d) { return d.Dark; })]) | |
xAxis = d3.svg.axis().scale(xsc) | |
charts.selectAll("g.xaxis") | |
.transition() | |
.call(xAxis) | |
charts.selectAll("circle") | |
.transition() | |
.attr("cx", function(d) { return xsc(d.Dark) } ) | |
charts.select(".regress").transition().style("stroke", "black") | |
titleX.text("Dark Defense x Weight") | |
}); | |
}) // ends csv(function, data) | |
</script> | |
</div><center><font color=white size=4></br> | |
<span class = "phys">PHYSICAL DEF</span> | <span class = "totaldef">TOTAL DEF</span> | <span class = "poise">POISE </span> | <span class = "dur">DURABILITY</span></br> | |
<span class = "fire">MAGIC DEF</span> | <span class = "light">LIGHT DEF</span> | <span class = "dark">DARK DEF</span> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment