d3Chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, height]);
svg.append("g")
.attr("transform", `translate(0, ${height-margin.bottom})`)
.call(d3.axisBottom(x))
.append("text")
.attr("style", `fill:black; font-weight: 700; font-size: 12px`)
.attr("transform",`translate(${(width-margin.right-margin.left)/2 + margin.left}, 35)`)
.text("Day of month");
svg.append("g")
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(y))
.append("text")
.attr("style", `fill:black; font-weight: 700; font-size: 12px`)
.attr("text-anchor", "middle")
.attr("transform",`translate(-35,${(height-margin.bottom-margin.top)/2 + margin.top}),rotate(-90)`)
.text("Month");
svg.append("g")
.classed("cells", true)
.selectAll("g.cells")
.data(averageWeather)
.join("g")
.attr("transform",d => `translate(${x(d.day)}, ${y(d.monthName)})`)
.append("rect")
.attr("width", x.bandwidth())
.attr("height", y.bandwidth())
.attr("fill", d => colorScale(d.value))
.on("mouseover", (event, d) => mouseOver(event, d))
.on("mouseout", (event, d) => mouseOut(event, d));
svg.append("g")
.attr("transform", `translate(${margin.left},${height-50})`)
.append(() => legend({ color: colorScale, title: "Avg of tmax", width: 300 }));
return svg.node()
}