function mapCountry(countryData) { var newData = {}; countryData.forEach((d, i) => { newData[d.name] = { name: d.name, region: d.region, income: d.income, population: d.population, lifeExpectancy: d.lifeExpectancy } }); return newData; } function getAxes(xScale, yScale) { return { x: d3.axisBottom().scale(xScale), y: d3.axisLeft().scale(yScale) } } function updateChart(svg, data, country, feature) { const countryData = data[country]; console.log(countryData); const metrics = countryData[feature]; const findMax = (max, cur) => Math.max(max, cur); const findMin = (min, cur) => Math.min(min, cur); const minVal = metrics.map(d => d[1]).reduce(findMin); const maxVal = metrics.map(d => d[1]).reduce(findMax); const minYear = metrics.map(d => d[0]).reduce(findMin); const maxYear = metrics.map(d => d[0]).reduce(findMax); let yearScale = d3.scaleLinear() .domain([minYear, maxYear]) .range([0, +svg.attr('width')]); let yScale = d3.scaleLinear() .domain([0, maxVal]) .range([svg.attr('height'), 0]); var areaObject = d3.area().x(d => yearScale(d[0])) .y0(d => yScale(0)) .y1(d => yScale(d[1])) .curve(d3.curveBasis); const axes = getAxes(yearScale, yScale); svg.select('#x-axis') .call(axes.x); svg.select('#y-axis') .call(axes.y); return areaObject(metrics); // areaChart.data(data) // .x(d => d[0]) // .y }