new custom heatmap function