chart = html`<svg
viewBox="0 0 ${width} ${height}"
style="display: block;">
<g>
${data.filter(d => d.temp !== "na").map(d => {
const icon = svgIcon(d.desc, hourScale.bandwidth() + 1, yearScale.bandwidth(), tempColor(d.temp));
return svg`<g transform="translate(${hourScale_(d.hour)},${yearScale(d.year)})">
<rect width="${hourScale.bandwidth()}" height="${yearScale.bandwidth()}" fill="transparent" />
${icon}
<title>${d.time}, ${d.temp}°C / ${Math.round(9*d.temp/5+32)}°F, ${d.desc}</title>
</g>`;
})}
</g>
${d3.select(svg`<g transform="translate(${margin.left},0)">`)
.call(d3.axisLeft(yearScale))
.call(g => g.select(".domain").remove())
.node()}
</svg>`