Data extraction from a picture of a graph

This is not a complete solution, but might get you on the way.

With a little bit of trial and error you can identify the coordinates of the blocks and the key in the image:

img = Import["http://i.stack.imgur.com/Ac8m0.png"];

pts = Table[{x, y}, {x, 65, 598, 33}, {y, 64, 810, 24}];    
key = Table[{697, y}, {y, 60, 810, 30}];

HighlightImage[img, {Flatten[pts, 1], ImageMarker[key, "Circle"]}]

enter image description here

Sample the image at the "key" coordinates to get the key colours:

keycols = ImageValue[img, key];

Row[RGBColor /@ keycols]

enter image description here

You can now sample the colours of the blocks and map the results into the key index using Nearest:

nf = Nearest[keycols -> Automatic];

data = Map[First[nf@ImageValue[img, #]] &, pts, {2}];

data is an array of values from 1 (white) to 26 (dark red). To check it, we can reconstruct the original blocks from the key colours:

Graphics @ Raster[Map[keycols[[#]] &, Transpose[data], {2}]]

enter image description here

What remains is to convert the key colour indices (1 to 26) into actual values (0 to 100?) taking into account the non-linear scale.