chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, height]);
const updateBars = bars(svg);
const updateAxis = axis(svg);
const updateLabels = labels(svg);
const updateTicker = ticker(svg);
invalidation.then(() => svg.interrupt());
svg.append("text")
.attr("font-family", "sans-serif")
.attr("font-size", 20)
.attr("y", 20)
.text(" Education Indicator : % of 25-64 years-old population has tertiary eduction ")
const scale = d3.scaleOrdinal()
.domain(["North America", "Europe", "Asia", "Oceania"])
.range(["#ED9A9B", "#F7BB80","#ADD4D1", "#95AFCA"]);
const legend = d3Legend
.legendColor()
.shape("path", d3.symbol().type(d3.symbolCircle).size(25)())
.shapePadding(15)
.labelOffset(5)
.scale(scale)
.labels(["North America", "Europe", "Asia", "Oceania"]);
svg.append("g")
.attr("class", "legend_auto")
.style('font-size', 12)
.style('font-family', 'sans-serif')
.attr("transform", `translate(${width - margin.right + 20}, ${margin.top - 20})`)
.call(legend)
return Object.assign(svg.node(), {
update(keyframe) {
const transition = svg.transition()
.duration(duration)
.ease(d3.easeLinear);
x.domain([0, keyframe[1][0].value]);
updateAxis(keyframe, transition);
updateBars(keyframe, transition);
updateLabels(keyframe, transition);
updateTicker(keyframe, transition);
}
});
}