I've done something very similar to this in the past, but my contract didn't allow me to keep the code.
In short, it's quite easy with D3 and their geo library. D3 creates SVG images, that can be coloured, can get a tooltip etc.
The input data would best be in textual format. JSON is the easiest to read in JS, but CSV is perhaps the easiest to write by hand (and it can be exported from Excel too). Other text formats are possible too, the choice is yours.
It would be nice to see the SHP data you have, if it's too precise, it will need to be generalised via the Douglas-Peucker algorithm to make loading acceptable. But that's not so hard. The SHP data can quite easily be converted to GeoJSON, which is easy to read in JS and process to SVG with D3.