Built with blockbuilder.org
forked from riff4's block: Lecture 3 HW - version 0.1
xxxxxxxxxx
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
</style>
</head>
<body>
<script>
var data=d3.csv('stocks.csv',function(error, data){
var dataset=data;
data.forEach(function(d){
d.price = +d.price;
d.date = d.date.substring(d.date.length - 4);
})
function sommeAnneeSymbol(year,symbol){
var somme = 0;
data.forEach(function(d){
if (d.date==year && d.symbol==symbol){
somme += d.price
}
})
return somme
}
function sommeAnnee(year){
var somme = 0;
data.forEach(function(d){
if (d.date==year){
somme += d.price
}
})
return somme
}
var color = d3.scaleOrdinal(d3.schemeCategory20);
var svg = d3.select("body").append("svg")
.attr("width", 960)
.attr("height", 500);
var x0 = d3.scaleBand()
.range([0, d3.select("svg").attr("width")])
.domain(d3.map(data,function(d){ return d.date; }).keys());
var y0 = d3.scaleLinear()
.domain([0, d3.max(data, function(d){return sommeAnnee(d.date)})])
.range([0, +d3.select("svg").attr("height")]);
var z0 = d3.scaleBand()
.range([0,x0.bandwidth()])
.domain(d3.map(data,function(d){ return d.symbol; }).keys());
var s = svg.selectAll("rect").data(data);
s.enter()
.append("rect")
.attr("class", "vertical")
s.enter()
.append("rect")
.attr("class", "horizontal")
svg.selectAll("rect")
.attr("class", "bar")
.attr("width", function(d, i) {return x0.bandwidth()/4; })
.attr("height", function(d, i) { return y0(sommeAnneeSymbol(d.date,d.symbol)); })
.attr("x", function(d, i) {return x0(d.date)+z0(d.symbol); })
.attr("y", function(d) { return 400 - y0(sommeAnneeSymbol(d.date,d.symbol)); })
.style("fill", function(d){return color(d.symbol)})
.style('opacity',100)
})
</script>
</body>
https://d3js.org/d3.v4.min.js