var margin = {top: 20, right: 40, bottom: 30, left: 30}; var width = document.body.clientWidth - margin.left - margin.right; var height = 400 - margin.top - margin.bottom; var x = d3.time.scale() .range([0, width]); var y = d3.scale.linear() .range([height-10, 0]); var dateParser = d3.time.format("%Y-%m-%d").parse; var stack = d3.layout.stack() .offset("zero") .values(function(d) { return d.values; }) .x(function(d) { return d.graphDate; }) .y(function(d) { return d.value; }); var area = d3.svg.area() .interpolate("step-before") .x(function(d) { return x(d.graphDate); }) .y0(function(d) { return y(d.y0); }) .y1(function(d) { return y(d.y0 + d.y); }); var z = d3.scale.category20() doInit(); updateFirst('all_topten.csv'); function doInit(){ //make the svg and axis xAxis = d3.svg.axis() .scale(x) .orient("bottom") .ticks(d3.time.months); yAxis = d3.svg.axis() .scale(y); yAxisr = d3.svg.axis() .scale(y); //make svg var graph = d3.select(".chart").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 + ")"); graph.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height + ")") .call(xAxis); graph.append("g") .attr("class", "y axis yright") .attr("transform", "translate(" + width + ", 0)") .call(yAxis.orient("right")); graph.append("g") .attr("class", "y axis yleft") .call(yAxis.orient("left")); } // function updateBoth(csvpath) { // var nest = d3.nest() // .key(function(d) { return d.Land+ "-" + d.Antragsart}); // //console.log(nest); // // d3.csv(csvpath, function(data) { // data.forEach(function(d) { // //console.log(data); // d.graphDate = dateParser(d.Datum); // d.value = +d.Summe; // d.type= d.Antragsart; // }); // // var layers = stack(nest.entries(data)).sort(function(a,b){return d3.ascending(a.key, b.key)}); // //console.log(layers); // x.domain(d3.extent(data, function(d) { return d.graphDate; })); // y.domain([0, d3.max(data, function(d) { return d.y0 + d.y; })]); // var k = d3.select("g .x") // .call(xAxis); // // // d3.select("g .yright") // .call(yAxis); // d3.select("g .yleft") // .call(yAxis); // d3.selectAll("defs").remove(); // d3.select(".chart svg g").selectAll("path").remove(); // // d3.select(".chart svg g").selectAll("path") // .data(layers) // .enter().append("path") // //.style("fill", function(d, i) { console.log(d.key);return z(d.key); }) // .attr("class", function(d){ // var country = d.key.split("-")[0]; // var src = d.key.split("-")[1]; // return src; // }) // .style("fill", function(d){ // var country = d.key.split("-")[0]; // var src = d.key.split("-")[1]; // if (src === "Folge"){ // var t = textures.lines().thicker(2.5).stroke(z(country)); // d3.select(".chart").select("svg").call(t); // return t.url(); // } else { // return z(country); // } // }) // .transition() // .duration(1000) // .attr("d", function(d) { return area(d.values); }); // }); // } function updateFirst(csvpath) { var nest = d3.nest() .key(function(d) { return d.Land }); queue() .defer(d3.csv, csvpath) .await(pushFirst); function pushFirst(error,csvpath){ var data =[]; csvpath.forEach(function(d){ if (d.Antragsart == "Erst") { d.graphDate = dateParser(d.Datum); d.value = +d.Summe; data.push(d); } }) var layers = stack(nest.entries(data));//.sort(function(a,b){return d3.ascending(a.key, b.key)}); x.domain(d3.extent(data, function(d) { return d.graphDate; })); y.domain([0, d3.max(data, function(d) { return d.y0 + d.y; })]); var k = d3.select("g .x") .call(xAxis); //update the y rigt axis d3.select("g .yright") .call(yAxis); //update the y left axis d3.select("g .yleft") .call(yAxis); //remove all paths d3.select(".chart svg g").selectAll("path").remove(); //remove all defs d3.selectAll("defs").remove(); //add new path depending on layers d3.select(".chart svg g").selectAll("path") .data(layers).enter().append("path") .transition() .duration(500) .style("fill", function(d, i) { return z(d.key); }) // --.-------.---------.-> //FILL .transition() .duration(500) .attr("d", function(d) { return area(d.values); }) .transition() .duration(750); } console.log("Update1"); } function updateSecond(csvpath) { var nest = d3.nest() .key(function(d) { return d.Land }); queue() .defer(d3.csv, csvpath) .await(pushSecond); function pushSecond(error,csvpath){ var data =[]; csvpath.forEach(function(d){ if (d.Antragsart == "Folge") { d.graphDate = dateParser(d.Datum); d.value = +d.Summe; data.push(d); } }) //sort teh layer on basis of country name var layers = stack(nest.entries(data))//.sort(function(a,b){return d3.ascending(a.key, b.key)}); console.log(layers); x.domain(d3.extent(data, function(d) { return d.graphDate; })); y.domain([0, d3.max(data, function(d) { return d.y0 + d.y; })]); var k = d3.select("g .x") .call(xAxis); //update the y rigt axis d3.select("g .yright") .call(yAxis); //update the y left axis d3.select("g .yleft") .call(yAxis); //remove all paths d3.select(".chart svg g").selectAll("path").remove(); //remove all defs d3.selectAll("defs").remove(); //add new path depending on layers d3.select(".chart svg g").selectAll("path") .data(layers).enter().append("path") .transition() .duration(100) .style("fill", function(d){ //using texture to make sg defs var t = textures.lines().thicker(1).stroke(z(d.key)); d3.select(".chart").select("svg").call(t); return t.url() }) // --.-------.---------.-> //FILL .attr("d", function(d) { return area(d.values); }); // }); } } // function updateBoth(csvpathFirst, csvpathSecond){ // var nest = d3.nest() // .key(function(d) { return d.Land + "-" + d.src}); // queue() // .defer(d3.csv, csvpathFirst) //using queue so that callback is called after loading both CSVs // .defer(d3.csv, csvpathSecond) // .await(makeMyChart); // // function makeMyChart(error, first, second) { // var data = []; // //iterate first // first.forEach(function(d) { // d.graphDate = dateParser(d.Datum); // d.value = +d.Summe; // d.src = "first" // data.push(d) // }); // //iterate second // second.forEach(function(d) { // d.graphDate = dateParser(d.Datum); // d.value = +d.Summe; // d.src = "second" // data.push(d) // }); // // //sort layers on basis of country // var layers = stack(nest.entries(data)).sort(function(a,b){return d3.ascending(a.key, b.key)}); // // x.domain(d3.extent(data, function(d) { return d.graphDate; })); // y.domain([0, d3.max(data, function(d) { return d.y0 + d.y; })]); // // var k = d3.select("g .x") // .call(xAxis); // d3.select("g .yright") // .call(yAxis); // d3.select("g .yleft") // .call(yAxis); // d3.selectAll("defs").remove(); // d3.select(".chart svg g").selectAll("path").remove(); // d3.select(".chart svg g").selectAll("path") // .data(layers) // .enter() // .append("path") // .attr("class", function(d){ // var country = d.key.split("-")[0]; // var src = d.key.split("-")[1]; // return src; // }) // .style("fill", function(d){ // var country = d.key.split("-")[0]; // var src = d.key.split("-")[1]; // if (src === "second"){ // var t = textures.lines().thicker(2).stroke(z(country)); // d3.select(".chart").select("svg").call(t); // return t.url(); // } else { // return z(country); // } // }) // .attr("class", function(d){return d.key}) // .attr("d", function(d) { return area(d.values); }); // // } // }