{
const svg = d3.create("svg").attr("width", width).attr("height", height);
const container = svg
.append("g")
.attr("transform", `translate(${width / 2}, ${height / 2})`);
const tooltip = d3.select("body").append("div").attr("class", "tooltip");
const max = d3.max(data, (d) => d["precipitation(mm)"]);
console.log("max", max);
const arc = d3
.arc()
.innerRadius((d) => radiusAxisScale(d.newYear))
.outerRadius(
(d) => radiusAxisScale(d.newYear) + radiusAxisScale.bandwidth()
)
.startAngle((d) => angleScaleArc(d.dayOfYear))
.endAngle((d) => angleScaleArc(d.dayOfYear + 1));
container
.selectAll("arcs")
.data(data)
.enter()
.append("path")
.attr("d", arc)
.attr("fill", (d) => getColors(d["precipitation(mm)"]))
.attr("stroke", "black")
.attr("stroke-width", 0);
if (axisShown) {
container
.selectAll("lines")
.data(axisData)
.enter()
.append("line")
.attr(
"x1",
(d) => radiusRange[0] * 1 * Math.cos(angleScaleAxis(d.dayOfYear))
)
.attr(
"y1",
(d) => radiusRange[0] * 1 * Math.sin(angleScaleAxis(d.dayOfYear + 0))
)
.attr(
"x2",
(d) => radiusRange[1] * 1.0 * Math.cos(angleScaleAxis(d.dayOfYear + 0))
)
.attr(
"y2",
(d) => radiusRange[1] * 1.0 * Math.sin(angleScaleAxis(d.dayOfYear + 0))
)
.attr("stroke", "#222")
.attr("stroke-width", 1)
.attr("stroke-dasharray", "2, 2");
const timeFormat = d3.timeFormat("%b");
container
.selectAll("text")
.data(axisData)
.enter()
.append("text")
.attr(
"x",
(d) =>
radiusRange[1] * 1.05 * Math.cos(angleScaleAxis(d.dayOfYear + 15))
)
.attr(
"y",
(d) =>
radiusRange[1] * 1.05 * Math.sin(angleScaleAxis(d.dayOfYear + 15))
)
.text((d) => timeFormat(d.newDate));
container
.selectAll("text2")
.data([2000, 2010, 2020])
.enter()
.append("text")
.attr("class", "years")
.attr("x", 3)
.attr("y", (d) => -radiusAxisScale(d))
.text((d) => d);
}
container
.append("text")
.attr("x", 0)
.attr("y", 5)
.text(selected)
.attr("class", "city");
return svg.node();
}