hoverhp_color = {
var width = 400,
height = 250;
var pokemon = d3.csvParse(`name,type,hp,attack,defense
Pikachu,Electric,35,55,40
Squirtle,Water,44,48,65
Weedle,Bug,40,35,30
Spearow,Normal,40,60,30
Sandshrew,Ground,50,75,85
Vulpix,Fire,38,41,40
Jigglypuff,Normal,115,45,20
Venomoth,Bug,70,65,60
Meowth,Normal,40,45,35
Poliwag,Water,40,50,40
Psyduck,Water,50,52,48
Golem,Rock,80,120,130
Charmander,Fire,39,52,43
Krabby,Water,30,105,90
Bulbasaur,Grass,45,49,49`);
var xScale = d3.scaleBand()
.domain(d3.range(pokemon.length))
.rangeRound([0, width])
.padding(0.05);
var yScale = d3.scaleLinear()
.domain([0, d3.max(pokemon.map(d => +d.hp))])
.range([0, height]);
var colorScale = d3.scaleOrdinal(d3.schemeBrBG[11]);
const svg = d3.select(DOM.svg(width, height));
svg.selectAll("rect")
.data(pokemon)
.enter().append("rect")
.attr("x", (d, i) => xScale(i))
.attr("y", d => height - yScale(d.hp))
.attr("width", xScale.bandwidth())
.attr("height", d => yScale(d.hp))
.attr("fill", (d, i)=> colorScale(d.hp))
.on("mouseover", function() {
d3.select(this)
.attr("fill", "orange");
})
.on("mouseover", function(d) {
var xpos = parseFloat(d3.select(this).attr("x")) + xScale.bandwidth() / 2;
var ypos = parseFloat(d3.select(this).attr("y"));
var tgrp = svg.append("g")
.attr("id", "tooltip")
.attr("transform", (d, i) => `translate(${xpos},${ypos})`);
tgrp.append("rect")
.attr("width", "140px")
.attr("height", "22px")
.attr("fill", "burlywood")
tgrp.append("text")
.attr("x", 5)
.attr("y", 14)
.attr("text-anchor", "left")
.attr("font-family", "sans-serif")
.attr("font-size", "11px")
.attr("font-weight", "bold")
.attr("fill", "black")
.text(`This pokemon has hp ${d.hp}`);
d3.select(this)
.attr("fill", "orange");
})
.on("mouseout", function(d) {
d3.select("#tooltip").remove();
d3.select(this)
.transition().duration(300)
.attr("fill", "steelblue");
});
return svg.node();
}