Built with blockbuilder.org
forked from mhaneef50673's block: fresh block
license: mit |
Built with blockbuilder.org
forked from mhaneef50673's block: fresh block
[{ | |
"key": "Line 1", | |
"date": "1-May-12", | |
"value": "68.13" | |
}, { | |
"key": "Line 1", | |
"date": "30-Apr-12", | |
"value": "63.98" | |
}, { | |
"key": "Line 1", | |
"date": "27-Apr-12", | |
"value": "67.00" | |
}, { | |
"key": "Line 1", | |
"date": "26-Apr-12", | |
"value": "89.70" | |
}, { | |
"key": "Line 1", | |
"date": "25-Apr-12", | |
"value": "99.00" | |
}, { | |
"key": "Line 1", | |
"date": "24-Apr-12", | |
"value": "130.28" | |
}, { | |
"key": "Line 1", | |
"date": "23-Apr-12", | |
"value": "166.70" | |
}, { | |
"key": "Line 1", | |
"date": "20-Apr-12", | |
"value": "234.98" | |
}, { | |
"key": "Line 1", | |
"date": "19-Apr-12", | |
"value": "345.44" | |
}, { | |
"key": "Line 1", | |
"date": "18-Apr-12", | |
"value": "443.34" | |
}, { | |
"key": "Line 1", | |
"date": "17-Apr-12", | |
"value": "543.70" | |
}, { | |
"key": "Line 1", | |
"date": "16-Apr-12", | |
"value": "580.13" | |
}, { | |
"key": "Line 1", | |
"date": "13-Apr-12", | |
"value": "605.23" | |
}, { | |
"key": "Line 1", | |
"date": "12-Apr-12", | |
"value": "622.77" | |
}, { | |
"key": "Line 1", | |
"date": "11-Apr-12", | |
"value": "626.20" | |
}, { | |
"key": "Line 1", | |
"date": "10-Apr-12", | |
"value": "628.44" | |
}, { | |
"key": "Line 1", | |
"date": "9-Apr-12", | |
"value": "636.23" | |
}, { | |
"key": "Line 1", | |
"date": "5-Apr-12", | |
"value": "633.68" | |
}, { | |
"key": "Line 1", | |
"date": "4-Apr-12", | |
"value": "629.32" | |
}, { | |
"key": "Line 1", | |
"date": "3-Apr-12", | |
"value": "618.63" | |
}, { | |
"key": "Line 1", | |
"date": "2-Apr-12", | |
"value": "599.55" | |
}, { | |
"key": "Line 1", | |
"date": "30-Mar-12", | |
"value": "609.86" | |
}, { | |
"key": "Line 1", | |
"date": "29-Mar-12", | |
"value": "617.62" | |
}, { | |
"key": "Line 1", | |
"date": "28-Mar-12", | |
"value": "614.48" | |
}, { | |
"key": "Line 1", | |
"date": "27-Mar-12", | |
"value": "606.98" | |
}, { | |
"key": "Line 1", | |
"date": "26-Mar-12", | |
"value": "616.98" | |
}, { | |
"key": "Line 2", | |
"date": "1-May-12", | |
"value": "34.12" | |
}, { | |
"key": "Line 2", | |
"date": "30-Apr-12", | |
"value": "45.56" | |
}, { | |
"key": "Line 2", | |
"date": "27-Apr-12", | |
"value": "67.89" | |
}, { | |
"key": "Line 2", | |
"date": "26-Apr-12", | |
"value": "78.54" | |
}, { | |
"key": "Line 2", | |
"date": "25-Apr-12", | |
"value": "89.23" | |
}, { | |
"key": "Line 2", | |
"date": "24-Apr-12", | |
"value": "99.23" | |
}, { | |
"key": "Line 2", | |
"date": "23-Apr-12", | |
"value": "101.34" | |
}, { | |
"key": "Line 2", | |
"date": "20-Apr-12", | |
"value": "122.34" | |
}, { | |
"key": "Line 2", | |
"date": "19-Apr-12", | |
"value": "134.56" | |
}, { | |
"key": "Line 2", | |
"date": "18-Apr-12", | |
"value": "160.45" | |
}, { | |
"key": "Line 2", | |
"date": "17-Apr-12", | |
"value": "180.34" | |
}, { | |
"key": "Line 2", | |
"date": "16-Apr-12", | |
"value": "210.23" | |
}, { | |
"key": "Line 2", | |
"date": "13-Apr-12", | |
"value": "223.45" | |
}, { | |
"key": "Line 2", | |
"date": "12-Apr-12", | |
"value": "201.56" | |
}, { | |
"key": "Line 2", | |
"date": "11-Apr-12", | |
"value": "212.67" | |
}, { | |
"key": "Line 2", | |
"date": "10-Apr-12", | |
"value": "310.45" | |
}, { | |
"key": "Line 2", | |
"date": "9-Apr-12", | |
"value": "350.45" | |
}, { | |
"key": "Line 2", | |
"date": "5-Apr-12", | |
"value": "410.23" | |
}, { | |
"key": "Line 2", | |
"date": "4-Apr-12", | |
"value": "430.56" | |
}, { | |
"key": "Line 2", | |
"date": "3-Apr-12", | |
"value": "460.34" | |
}, { | |
"key": "Line 2", | |
"date": "2-Apr-12", | |
"value": "510.34" | |
}, { | |
"key": "Line 2", | |
"date": "30-Mar-12", | |
"value": "534.23" | |
}, { | |
"key": "Line 2", | |
"date": "29-Mar-12", | |
"value": "578.23" | |
}, { | |
"key": "Line 2", | |
"date": "28-Mar-12", | |
"value": "590.12" | |
}, { | |
"key": "Line 2", | |
"date": "27-Mar-12", | |
"value": "560.34" | |
}, { | |
"key": "Line 2", | |
"date": "26-Mar-12", | |
"value": "580.12" | |
}, { | |
"key": "Line 3", | |
"date": "1-May-12", | |
"value": "50.13" | |
}, { | |
"key": "Line 3", | |
"date": "30-Apr-12", | |
"value": "40.13" | |
}, { | |
"key": "Line 3", | |
"date": "27-Apr-12", | |
"value": "72.00" | |
}, { | |
"key": "Line 3", | |
"date": "26-Apr-12", | |
"value": "71.00" | |
}, { | |
"key": "Line 3", | |
"date": "25-Apr-12", | |
"value": "95.00" | |
}, { | |
"key": "Line 3", | |
"date": "24-Apr-12", | |
"value": "37.00" | |
}, { | |
"key": "Line 3", | |
"date": "23-Apr-12", | |
"value": "120.00" | |
}, { | |
"key": "Line 3", | |
"date": "20-Apr-12", | |
"value": "112.00" | |
}, { | |
"key": "Line 3", | |
"date": "19-Apr-12", | |
"value": "114.87" | |
}, { | |
"key": "Line 3", | |
"date": "18-Apr-12", | |
"value": "175.00" | |
}, { | |
"key": "Line 3", | |
"date": "17-Apr-12", | |
"value": "250.00" | |
}, { | |
"key": "Line 3", | |
"date": "16-Apr-12", | |
"value": "300.00" | |
}, { | |
"key": "Line 3", | |
"date": "13-Apr-12", | |
"value": "750.00" | |
}, { | |
"key": "Line 3", | |
"date": "12-Apr-12", | |
"value": "275.00" | |
}, { | |
"key": "Line 3", | |
"date": "11-Apr-12", | |
"value": "150.00" | |
}, { | |
"key": "Line 3", | |
"date": "10-Apr-12", | |
"value": "240.00" | |
}, { | |
"key": "Line 3", | |
"date": "9-Apr-12", | |
"value": "400.00" | |
}, { | |
"key": "Line 3", | |
"date": "5-Apr-12", | |
"value": "395.00" | |
}, { | |
"key": "Line 3", | |
"date": "4-Apr-12", | |
"value": "375.00" | |
}, { | |
"key": "Line 3", | |
"date": "3-Apr-12", | |
"value": "500.00" | |
}, { | |
"key": "Line 3", | |
"date": "2-Apr-12", | |
"value": "550.00" | |
}, { | |
"key": "Line 3", | |
"date": "30-Mar-12", | |
"value": "600.00" | |
}, { | |
"key": "Line 3", | |
"date": "29-Mar-12", | |
"value": "500.00" | |
}, { | |
"key": "Line 3", | |
"date": "28-Mar-12", | |
"value": "600.00" | |
}, { | |
"key": "Line 3", | |
"date": "27-Mar-12", | |
"value": "650.00" | |
}, { | |
"key": "Line 3", | |
"date": "26-Mar-12", | |
"value": "610.00" | |
}] |
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://d3js.org/d3.v4.min.js"></script> | |
<style> | |
/* Styles go here */ | |
svg { | |
font: 10px sans-serif; | |
} | |
path { | |
stroke-width: 1; | |
fill: none; | |
} | |
#Line1, #Nebo1D { | |
stroke: #009390; | |
} | |
#Line1Legend, #Nebo1DLegend { | |
fill: #009390; | |
} | |
#Line2, #Nebo2D { | |
stroke: #8dc63f; | |
} | |
#Line2Legend, #Nebo2DLegend { | |
fill: #8dc63f; | |
} | |
#Line3, #Nebo1S { | |
stroke: #132d46; | |
} | |
#Line3Legend, #Nebo1SLegend { | |
fill: #132d46; | |
} | |
#Line4, #Nebo2S { | |
stroke: #aaa813; | |
} | |
#Line4Legend, #Nebo2SLegend { | |
fill: #aaa813; | |
} | |
#Stream5, #Nebo3 { | |
stroke: #619dd4; | |
} | |
#Stream5Legend, #Nebo3Legend { | |
fill: #619dd4; | |
} | |
.pn1d, .pn2d { | |
fill: none; | |
clip-path: url(#clip); | |
} | |
.pn1d { | |
stroke: #009390; | |
} | |
.pn2d { | |
stroke: #1b4164; | |
} | |
.axis path, | |
.axis line { | |
fill: none; | |
stroke: #000; | |
stroke-width: 1px; | |
shape-rendering: crispEdges; | |
} | |
.brush .extent { | |
stroke: #fff; | |
fill-opacity: .125; | |
shape-rendering: crispEdges; | |
} | |
</style> | |
</head> | |
<body> | |
<script> | |
// Code goes here | |
var marginFocus = {top: 10, right: 10, bottom: 250, left: 40}, | |
marginContext = {top: 430, right: 10, bottom: 170, left: 40}, | |
width = 960 - marginFocus.left - marginFocus.right, | |
heightFocus = 650 - marginFocus.top - marginFocus.bottom, | |
heightContext = 650 - marginContext.top - marginContext.bottom; | |
legendOffset = 550; | |
let parseTime = d3.timeParse("%d-%b-%y"); | |
var xFocus = d3.scaleTime().range([0, width]), | |
xContext = d3.scaleTime().range([0, width]), | |
yFocus = d3.scaleLinear().range([heightFocus, 0]), | |
yContext = d3.scaleLinear().range([heightContext, 0]); | |
var xAxisFocus = d3.axisBottom(xFocus); | |
var xAxisContext = d3.axisBottom(xContext); | |
var yAxisFocus = d3.axisLeft(yFocus); | |
var levelFocus = d3.line() | |
.x(function(d) { console.log("level"); | |
console.log(d.date); | |
console.log(xFocus(d.date)); | |
return xFocus(d.date); }) | |
.y(function(d) { return yFocus(d.value); }); | |
var levelContext = d3.line() | |
.x(function(d) { | |
return xContext(d.date); }) | |
.y(function(d) { return yContext(d.value); }); | |
var svg = d3.select("body").append("svg") | |
.attr("width", width + marginFocus.left + marginFocus.right) | |
.attr("height", heightFocus + marginFocus.top + marginFocus.bottom); | |
svg.append("defs").append("clipPath") | |
.attr("id", "clip") | |
.append("rect") | |
.attr("width", width) | |
.attr("height", heightFocus); | |
var focus = svg.append("g") | |
.attr("class", "focus") | |
.attr("transform", "translate(" + marginFocus.left + "," + marginFocus.top + ")"); | |
var context = svg.append("g") | |
.attr("class", "context") | |
.attr("transform", "translate(" + marginContext.left + "," + marginContext.top + ")"); | |
d3.json("data.json", function(error, data) { | |
data.forEach(function(d) { | |
d.date = parseTime(d.date); | |
d.value = +d.value; | |
}); | |
// console.log(data); | |
xFocus.domain(d3.extent(data.map(function(d) {console.log("domain"); | |
console.log(d); | |
return d.date; }))); | |
yFocus.domain([d3.min(data.map(function(d) { return d.value; })),d3.max(data.map(function(d) { return d.value; }))]); | |
xContext.domain(xFocus.domain()); | |
yContext.domain(yFocus.domain()); | |
// Nest the entries by piezo | |
var dataNest = d3.nest() | |
.key(function(d) {return d.key;}) | |
.entries(data); | |
console.log(dataNest); | |
var tempArr = []; | |
data.map(function(d){ | |
console.log(d); | |
var tempObj = {}; | |
tempObj.key = d.key; | |
}) | |
legendSpace = width/dataNest.length; // spacing for legend // ****** | |
var brush = d3.brushX(xContext) | |
//.extent([0, 1]) | |
.on("brush", brushed); | |
focus.selectAll("g").data(dataNest) | |
.enter() | |
.append("g") | |
.attr("id", function(d) { return d.key.replace(/\s+/g, '') }) //the replace stuff is getting rid of spaces | |
.append("path") | |
.attr("class", "line") | |
.attr("d", function(d) {console.log(d); return levelFocus(d.values); }); | |
context.selectAll("g").data(dataNest) | |
.enter() | |
.append("g") | |
.attr("class", "line") | |
.attr("id", function(d) { return d.key.replace(/\s+/g, '') }) //the replace stuff is getting rid of spaces | |
.append("path") | |
.attr("d", function(d) { return levelContext(d.values); }); | |
focus.append("g") | |
.attr("class", "x axis") | |
.attr("transform", "translate(0," + heightFocus + ")") | |
.call(xAxisFocus); | |
focus.append("g") | |
.attr("class", "y axis") | |
.call(yAxisFocus); | |
context.append("g") | |
.attr("class", "x axis") | |
.attr("transform", "translate(0," + heightContext + ")") | |
.call(xAxisContext); | |
context.append("g") | |
.attr("class", "x brush") | |
.call(brush) | |
.selectAll("rect") | |
.attr("y", -6) | |
.attr("height", heightContext + 7); | |
function brushed() { | |
/*console.log(d3.event.selection); | |
console.log(levelFocus); | |
console.log(xAxisFocus); | |
console.log(xContext); */ | |
xFocus.domain(d3.event.selection === null ? xContext.domain() : d3.event.selection.map(xContext.invert, xContext)); | |
focus.selectAll("path.line").attr("d", function(d) { | |
return levelFocus(d.values); }); | |
//focus.select(".x.axis").call(xAxisFocus); | |
//console.log("brushed"); | |
//console.log(d3.event.sourceEvent.type); | |
//console.log(d3.event.selection); | |
} | |
}); | |
</script> | |
</body> |