chart = {
const svg = d3
.create("svg")
.attr("width", chart_width)
.attr("height", chart_height)
.attr("viewBox", [0, 0, chart_width, chart_height+20]);
svg
.append("g")
.attr(
"transform",
`translate(2,${chart_height+2})`
)
.call(d3.axisBottom(x));
svg
.append("g")
.attr("transform", `translate(${margin.left},0)`)
.attr("class", "y-axis")
.call(d3.axisLeft(y));
const legend = svg.append("g")
.attr("transform", `translate(${chart_width/2}, -2)`)
const size = 16;
const border_padding = 0;
const item_padding = 5;
const text_offset = 2;
svg
.selectAll(".rect")
.data(data)
.enter()
.append("rect")
.attr("x", margin.left)
.attr("y", (d) => y(d.survey_question) + y_group(d.category))
.attr("width", (d) => x(+d.value) - margin.left)
.attr("height", y.bandwidth() / 2)
.attr("fill", (d) => fill_scale(d.category))
.style("opacity", function(d){
console.log(d);
if(+d.value > .87 ){
return 0.85;
}
else{
return 0.85;
}
})
;
legend
.selectAll("boxes")
.data(domains)
.enter()
.append("rect")
.attr("x", border_padding)
.attr("y", (d, i) => border_padding + (i * (size + item_padding)))
.attr("width", size)
.attr("height", size)
.style("fill", (d) => colorScale(d));
legend
.selectAll("labels")
.data(domains)
.enter()
.append("text")
.attr("x", border_padding + size + item_padding)
.attr("y", (d, i) => border_padding + i * (size + item_padding) + (size / 2) + text_offset)
.text((d) => d)
.attr("text-anchor", "left")
.style("alignment-baseline", "middle")
.style("font-family", "sans-serif");
return svg.node();
}