There is a viewport for each row slice in each heatmap.
This function contructs the name of the viewport,
goes to the viewport by seekViewport
and applies code
to that viewport.If you know the number of rows and columns for that row slice, it is
simple to calculate the position of every small grid in the row slice.
E.g., the position for the grid in i^th row and j^th column is:
# assume nc is the number of columns
# and nr is the number of rows in that row slice
unit((i-0.5)/nc, "npc")
unit((j-0.5)/nr, "npc")
# the width is
unit(1/nc, "npc")
# the height is
unit(1/nr, "npc")