Separate value generation from rendering so that values can be cached
Add a better heatmap colorscheme