Published unlisted
Edited
Jun 11, 2022
Insert cell
# Debugging Line Generator
Insert cell
<div id="here"></div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 400">
<rect class="vBoxRect" width="720" height="400" stroke="red" fill="none" style="overflow: visible;"></rect>
<rect class="boundRect" x="70" y="70" width="580" height="280" fill="none" stroke="black"></rect>
<g class="bound" style="transform: translate(70px, 70px);"></g>
</svg>

Insert cell

AfganisthanData =
[
{"Region": "South Asia","Name": "Afghanistan","Year": 1997,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 1998,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 1999,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2000,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2001,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2002,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2003,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2004,"Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2005,"Value": 0.273092369477912},
{"Region": "South Asia","Name": "Afghanistan","Year": 2006,"Value": 0.273092369477912},
{"Region": "South Asia","Name": "Afghanistan","Year": 2007,"Value": 0.276859504132231},
{"Region": "South Asia","Name": "Afghanistan","Year": 2008,"Value": 0.276859504132231},
{"Region": "South Asia","Name": "Afghanistan","Year": 2009,"Value": 0.273092369477912},
{"Region": "South Asia","Name": "Afghanistan","Year": 2010,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2011,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2012,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2013,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2014,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2015,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2016,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2017,"Value": 0.27710843373494},
{"Region": "South Asia","Name": "Afghanistan","Year": 2018, "Value": null},
{"Region": "South Asia","Name": "Afghanistan","Year": 2019,"Value": 0.278688524590163},
{"Region": "South Asia","Name": "Afghanistan","Year": 2020,"Value": 0.270161290322581},
{"Region": "South Asia","Name": "Afghanistan","Year": 2021,"Value": 0.270161290322581}
]

Insert cell

AfganisthanFilter = [
{"from":-1, "to": 8},
{"from":20, "to": 22}
]
Insert cell

ComorosData =[
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 1997,"Value": 0},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 1998,"Value": 0},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 1999,"Value": null},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2000,"Value": null},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2001,"Value": null},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2002,"Value": null},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2003,"Value": null},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2004,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2005,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2006,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2007,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2008,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2009,"Value": 0},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2010,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2011,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2012,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2013,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2014,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2015,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2016,"Value": 0.0303030303030302},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2017,"Value": 0.0606060606060605},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2018,"Value": 0.0606060606060605},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2019,"Value": 0.0606060606060605},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2020,"Value": 0.166666666666667},
{"Region": "Sub-Saharan Africa","Name": "Comoros","Year": 2021,"Value": 0.166666666666667}
]
Insert cell
ComorosFilter = [
{"from":1, "to": 7}
]

Insert cell

NarauData = [
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 1997,"Value": null},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 1998,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 1999,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2000,"Value": null},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2001,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2002,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2003,"Value": null},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2004,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2005,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2006,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2007,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2008,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2009,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2010,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2011,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2012,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2013,"Value": 0.0526315789473684},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2014,"Value": 0.0526315789473684},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2015,"Value": 0.0526315789473684},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2016,"Value": 0.0526315789473684},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2017,"Value": 0.105263157894736},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2018,"Value": 0.105263157894736},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2019,"Value": 0.105263157894736},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2020,"Value": 0.105263157894736},
{"Region": "East Asia & Pacific","Name": "Nauru","Year": 2021,"Value": 0.105263157894736}
]

Insert cell

NarauFilter = [
{"from":-1, "to": 1},
{"from":2, "to": 4},
{"from":5, "to": 7},
];

Insert cell

SolomonData = [
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 1997,"Value": null},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 1998,"Value": 0.0204081632653061},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 1999,"Value": 0.0204081632653061},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2000,"Value": 0.0204081632653061},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2001,"Value": null},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2002,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2003,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2004,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2005,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2006,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2007,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2008,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2009,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2010,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2011,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2012,"Value": 0.02},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2013,"Value": 0.02},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2014,"Value": 0.02},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2015,"Value": 0.02},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2016,"Value": 0.02},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2017,"Value": 0.02},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2018,"Value": 0.0204081632653061},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2019,"Value": 0.0408163265306122},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2020,"Value": 0.0638297872340425},
{"Region": "East Asia & Pacific","Name": "Solomon Islands","Year": 2021,"Value": 0.08}
]

Insert cell

SolomonFilter = [
{"from":-1, "to": 1},
{"from":3, "to": 5}
]

Insert cell

TongaData =[
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 1997,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 1998,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 1999,"Value": null},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2000,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2001,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2002,"Value": null},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2003,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2004,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2005,"Value": 0.0344827586206897},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2006,"Value": 0.0333333333333333},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2007,"Value": 0.0333333333333333},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2008,"Value": 0.03125},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2009,"Value": 0.03125},
{"Region": "East Asia & Pacific","Name": "Tonga", "Year": 2010,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2011,"Value": 0.0357142857142857},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2012,"Value": 0.0357142857142857},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2013,"Value": 0.0357142857142857},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2014,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2015,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2016,"Value": 0},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2017,"Value": 0.0769230769230769},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2018,"Value": 0.0740740740740741},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2019,"Value": 0.0740740740740741},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2020,"Value": 0.0740740740740741},
{"Region": "East Asia & Pacific","Name": "Tonga","Year": 2021,"Value": 0}
]

Insert cell

TongaFilter = [
{"from":1, "to": 3},
{"from":4, "to": 6}
]

Insert cell

height = 400;
Insert cell

width = 720;

Insert cell

padding = ({
top: 70,
bottom: 50,
left: 70,
right: 70
})

Insert cell
boundHeight = height - padding.top - padding.bottom;
Insert cell

boundWidth = width - padding.right - padding.left;

Insert cell
////////////////////////////////////////////////////////////
//////////////////////// 2 CREATE SCALE ////////////////////
////////////////////////////////////////////////////////////


Insert cell
data = AfganisthanData;
Insert cell
filter = AfganisthanFilter;
Insert cell
scaleX = d3.scaleLinear()
.range([0, boundWidth])
.domain(d3.extent(data, d => d.Year))
Insert cell
scaleY = d3.scaleLinear()
.range([boundHeight, 0])
.domain(d3.extent(data, d => d.Value))
Insert cell
{
let bound = d3.select('.bound')

filter.forEach(
(a, j, r) => {

console.log('a',a,'j',j,'r',r)
let dataX = data.filter( (b, i) => i == r[j].from || i == r[j].to)

console.log('dataX',dataX)
let val = d3.line()
.defined(d => d.Value)
.x(d => scaleX(d.Year))
.y(d => scaleY(d.Value))
(dataX.filter((a) => a.Value !== null))

console.log(val);
bound.append('path')
.attr('class', `lineX${j}`)
.attr('d', val)
.attr('fill', 'none')
.attr('stroke', 'green')
}
)}

Insert cell
// val = d3.line()
// .defined(d => d.Value)
// .x(d => scaleX(d.Year))
// .y(d => scaleY(d.Value))
// (dataX.filter((a) => a.Value !== null))
Insert cell

One platform to build and deploy the best data apps

Experiment and prototype by building visualizations in live JavaScript notebooks. Collaborate with your team and decide which concepts to build out.
Use Observable Framework to build data apps locally. Use data loaders to build in any language or library, including Python, SQL, and R.
Seamlessly deploy to Observable. Test before you ship, use automatic deploy-on-commit, and ensure your projects are always up-to-date.
Learn more