This code for a heatmap, is from a previous answer here. I've changed it so it displays four decimal places:
library(tidyverse)
## make data
dat <- matrix(rnorm(100, 3, 1), ncol=10)
## reshape data (tidy/tall form)
dat2 <- dat %>%
  tbl_df() %>%
  rownames_to_column('Var1') %>%
  gather(Var2, value, -Var1) %>%
  mutate(
    Var1 = factor(Var1, levels=1:10),
    Var2 = factor(gsub("V", "", Var2), levels=1:10)
  )
## plot data
ggplot(dat2, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = round(value, 4))) +
  scale_fill_gradient(low = "white", high = "red")
With four decimal places my output looks like this:
How can I:
- Make the cells large enough to contain all of the digits
 - Make the cells square, i.e. not rectangular (so that they look like the output in the original answer)
 - Force the display of significant digits so that say 0.9 displays as 0.9000
 
Thank you.
