oke here's the code ,in case using a codepen link is a problem
[CODE lang="javascript" highlight="43"]function displayData(json){
let dataset = [];
const margin = 60;
Object.keys(json).forEach(function(key){
dataset.push([key,json[key]]);
});
//get the 'data' property
const data = dataset[dataset.length-1];
let arrGDP =[]; let arrYear=[];
//the 'data' property values for year and GDP
data[1].forEach(element=>(arrGDP.push(element[1])));
data[1].forEach(element=>(arrYear.push(parseInt(element[0]))));
const svgHeight = d3.max(arrGDP) + (2*margin);
const svgWidth = d3.max(arrYear) + (2*margin);
const gWidth = d3.max(arrYear)/arrYear.length;
const gHeight = d3.max(arrGDP);
const yScale = d3.scaleLinear()
.domain([d3.min(arrGDP), d3.max(arrGDP)])
.range([d3.max(arrGDP), 0]);
const xScale = d3.scaleLinear()
.domain([d3.min(arrYear),d3.max(arrYear)])
.range([0,d3.max(arrYear)])
const svg = d3.select("body")
.append("svg")
.attr("id","container")
.attr("width",svgWidth)
.attr("height",svgHeight);
const chart = svg.append('g')
.attr('transform', `translate(${margin}, ${margin})`);
chart.append('g')
.call(d3.axisLeft(yScale));
chart.append('g')
.attr('transform', `translate(0, ${gHeight})`)
.call(d3.axisBottom(xScale));
chart.append('g')
.selectAll("rect")
.data(arrYear)
.enter()
.append("rect")
.attr('x',(d,i,arrYear)=>xScale(i))
.attr('y',(d)=>gHeight-yScale(d))
.attr("width",gWidth)
.attr("height",(d,i,arrGDP)=>yScale(d))
}
function getData(){
const req = new XMLHttpRequest();
req.open("GET",'https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json',true);
req.send();
//error check
req.onload = function(){
const json = JSON.parse(req.responseText);
displayData(json);
};
}
document.addEventListener('DOMContentLoaded', getData);
[/CODE]