{
var w = 800;
var h = 500;
var padding = 40;
var xScale, yScale, xAxis, yAxis;
var formatTime = d3.timeFormat("%Y");
const svg = d3.create('svg')
.attr("width", w)
.attr("height", h);
xScale = d3.scaleTime()
.domain([
d3.min(dataset, function(d) { return d.date; }),
d3.max(dataset, function(d) { return d.date ; })
])
.range([padding, w-padding]);
yScale = d3.scaleLinear()
.domain([
d3.min(dataset, function(d) { return d.score; }),
d3.max(dataset, function(d) { return d.score; })
])
.range([h - padding, padding]);
xAxis = d3.axisBottom()
.scale(xScale)
.ticks(10)
.tickFormat(formatTime);
//Define Y axis
yAxis = d3.axisLeft()
.scale(yScale)
.ticks(10)
svg.selectAll("circle")
.data(dataset).enter()
.append("circle")
.attr("cx", function(d) {return xScale(d.date)+10})
.attr("cy", function(d) {return yScale(d.score)})
.attr("r", 5)
.attr("fill", "yellow")
.on("mouseover", function() {
d3.select(this)
.transition()
.duration(1000)
.attr("r", "50")
.attr("fill", "blue")
})
.on("mouseout", function() {
d3.select(this)
.transition()
.duration(100)
.attr("r", "5")
.attr("fill", "yellow");
});
svg.append("g")
.attr("class", "axis")
.attr("transform", `translate(10, 460)`)
.call(xAxis);
svg.append("g")
.attr("class", "axis")
.attr("transform", `translate(40, 0)`)
.call(yAxis);
svg.selectAll("text")
.data(dataset).enter()
.append("text")
.attr("x", function(d) {return xScale(d.date)+40})
.attr("y", function(d) {return yScale(d.score)})
.text(function(d) {return d.country})
.attr("font-size", "10px")
return svg.node()
}