makeChart1 = (dataset) => {
const w = 600;
const h = dataset.length * 24;
const chart1Svg = d3.create("svg").attr("width", w).attr("height", h);
dataset.sort((a, b) => b.downloads - a.downloads);
const xScale = d3
.scaleLinear()
.domain([0, d3.max(dataset, (d) => d.downloads)])
.rangeRound([0, w - 100]);
const yScale = d3
.scaleBand()
.domain(dataset.map((d) => d.app_name))
.rangeRound([20, h - 20]);
const colorScale = d3.scaleLinear().domain([4.5, 5]).range(["#88d", "#ccf"]);
chart1Svg
.selectAll("rect")
.data(dataset)
.join("rect")
.attr("x", 80)
.attr("y", (d) => yScale(d.app_name))
.attr("width", (d) => xScale(d.downloads))
.attr("height", 20)
.attr("fill", (d) => colorScale(d.average_rating));
chart1Svg
.append("g")
.attr("class", "axis")
.attr("transform", `translate(80, ${h - 20})`)
.call(d3.axisBottom(xScale));
chart1Svg
.append("g")
.attr("class", "axis")
.attr("transform", `translate(80,0)`)
.call(d3.axisLeft(yScale));
return chart1Svg.node();
}