{
let width = 700;
let height = 300;
let svgElement = DOM.svg(width, height);
let svg = d3.select(svgElement);
let margin = {
top: 20,
right: 20,
bottom: 50,
left: 50
};
let W = width - margin.left - margin.right,
H = height - margin.top - margin.bottom;
let chartContainer = svg
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
let dataArray = [50, 100, 150, 200, 250, 300, 350, 400, 450, 500];
let colorScale = d3
.scaleOrdinal()
.domain(d3.range(dataArray.length))
.range(d3.schemeCategory10);
let xScale = d3
.scaleBand()
.domain(d3.range(dataArray.length))
.range([0, W])
.padding(0.2);
let yScale = d3
.scaleLinear()
.domain([0, d3.max(dataArray)])
.range([H, 0]);
chartContainer
.selectAll("rect")
.data(dataArray)
.join("rect")
.attr("x", (d, i) => xScale(i))
.attr("y", (d, i) => yScale(d))
.attr("height", (d, i) => H - yScale(d))
.attr("width", xScale.bandwidth())
.style("fill", (d, i) => colorScale(i))
.on("mouseover", function() {
d3.select(this).style("stroke", "black");
})
.on("mouseout", function(d) {
d3.select(this).style("stroke", "none");
});
let xAxis = d3.axisBottom(xScale);
let yAxis = d3.axisLeft(yScale);
chartContainer
.append('g')
.attr('transform', 'translate(0,' + H + ')')
.call(xAxis);
chartContainer.append('g').call(yAxis);
return svgElement;
}