tenureChart = {
const dimensions = {
width: 1050,
height: 800,
mt: 50,
mb: 50,
ml: 50,
mr: 50
}
const svg = d3.create('svg').attr('width', dimensions.width).attr('height', dimensions.height);
const x = d3.scaleBand()
.domain(castByTenure.map(c => c.names))
.range([dimensions.ml, dimensions.width-dimensions.mr])
.padding(0.1)
const y = d3.scaleLinear()
.domain([0, d3.max(castByTenure, (d) => d.yearsInCast)])
.range([dimensions.height-dimensions.mb, dimensions.mt])
svg.append("g").attr("fill", "steelblue")
.selectAll()
.data(castByTenure)
.join("rect")
.attr("x", (d) => x(d.names))
.attr("y", (d) => y(d.yearsInCast))
.attr("height", (d) => dimensions.height-dimensions.mb-y(d.yearsInCast))
.attr("width", x.bandwidth())
svg.append("g")
.attr("transform", `translate(0, ${dimensions.height-dimensions.mb})`)
.call(
d3.axisBottom(x)
.tickFormat(x => x)
);
svg.append("g")
.attr("transform", `translate(${dimensions.ml},0)`)
.call(d3.axisLeft(y))
.call(g => g.append("text")
.attr("x", -dimensions.ml)
.attr("y", 10)
.attr("fill", "currentColor"))
return svg.node();
}