79452437

Date: 2025-02-19 18:49:07
Score: 1
Natty:
Report link

In R, is it possible to do "conditional color formatting" as is done in Microsoft Excel?

An Image with R vanilla

I had quite some fun constructing an image with additional text() at each cell. Wrapped in an optional local({ .. }) to prevent the environment from getting cluttered.

The approach requires data which can be represented as square matrix!

Note. Was a long day in Germany. Would be nice if someone suggests a simplified approach to rotate M--probably by reverting s somewhere? Thank you!

local({
  # own re-format routine 
  values = unlist(z$name_coun)
  row_names = unique(z$year_1)
  col_names = unique(z$year_2)
  nr = nc = length(row_names)
  M = matrix(values, nrow = nr, byrow = TRUE, dimnames = list(row_names, col_names))

  # reverting magic that harmonises col-argument of image and text 
  s = seq(nr)
  M = t(M[rev(s), ])
  image(s, s, M, xlab='', ylab = '', axes = FALSE, 
        col = hcl.colors(1e3, 'Reds 3', rev = TRUE))
  with(expand.grid(x = s, y = s), text(x, y, labels = M, col = "black"))

  # add custome axes
  axis(2, at = s, labels = rev(row_names), las = 2, col = NA) # left 
  axis(3, at = s, labels = col_names, las = 2, col = NA) # top
})

Data

> dput(z)
structure(list(year_1 = c(2000L, 2000L, 2000L, 2000L, 2000L, 
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2001L, 2001L, 
2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 
2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 2001L, 
2001L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 
2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 2002L, 
2002L, 2002L, 2002L, 2002L, 2003L, 2003L, 2003L, 2003L, 2003L, 
2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 
2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2004L, 2004L, 
2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 
2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 2004L, 
2004L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 
2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 
2005L, 2005L, 2005L, 2005L, 2006L, 2006L, 2006L, 2006L, 2006L, 
2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 
2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 
2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 
2008L, 2008L, 2008L, 2008L, 2009L, 2009L, 2009L, 2009L, 2009L, 
2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 
2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 2010L, 2010L, 
2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 
2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 
2010L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 
2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 
2011L, 2011L, 2011L, 2011L, 2012L, 2012L, 2012L, 2012L, 2012L, 
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 
2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2013L, 2013L, 
2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
2013L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
2014L, 2014L, 2014L, 2014L, 2015L, 2015L, 2015L, 2015L, 2015L, 
2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2018L, 2018L, 2018L, 2018L, 2018L, 
2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 
2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 
2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 
2020L, 2020L, 2020L, 2020L), year_2 = c(2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 
2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2020L, 
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 
2018L, 2019L, 2020L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
2015L, 2016L, 2017L, 2018L, 2019L, 2020L), name_count = c(0L, 
0L, 1L, 3L, 1L, 1L, 4L, 1L, 3L, 2L, 3L, 3L, 1L, 2L, 4L, 0L, 4L, 
4L, 3L, 1L, 1L, 3L, 1L, 2L, 5L, 2L, 2L, 1L, 0L, 3L, 2L, 1L, 4L, 
0L, 2L, 4L, 2L, 3L, 4L, 2L, 2L, 1L, 2L, 2L, 1L, 4L, 3L, 2L, 2L, 
0L, 0L, 0L, 3L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L, 6L, 1L, 1L, 1L, 
1L, 3L, 2L, 1L, 2L, 4L, 2L, 3L, 1L, 5L, 1L, 3L, 1L, 1L, 0L, 0L, 
1L, 1L, 2L, 3L, 6L, 3L, 1L, 3L, 1L, 1L, 2L, 3L, 1L, 2L, 4L, 1L, 
1L, 3L, 2L, 5L, 4L, 3L, 2L, 5L, 4L, 4L, 2L, 6L, 3L, 5L, 1L, 1L, 
4L, 2L, 2L, 2L, 2L, 2L, 0L, 2L, 4L, 3L, 0L, 3L, 0L, 2L, 2L, 2L, 
3L, 5L, 0L, 1L, 4L, 2L, 2L, 2L, 4L, 7L, 1L, 1L, 1L, 2L, 2L, 0L, 
1L, 2L, 1L, 1L, 2L, 4L, 3L, 2L, 1L, 5L, 3L, 4L, 3L, 5L, 0L, 4L, 
2L, 3L, 1L, 5L, 2L, 3L, 2L, 0L, 5L, 3L, 5L, 2L, 9L, 1L, 3L, 2L, 
2L, 1L, 0L, 1L, 3L, 1L, 3L, 1L, 2L, 4L, 3L, 3L, 1L, 3L, 1L, 2L, 
1L, 3L, 1L, 5L, 2L, 4L, 1L, 2L, 5L, 1L, 3L, 3L, 1L, 5L, 1L, 3L, 
3L, 2L, 2L, 0L, 0L, 5L, 1L, 6L, 6L, 3L, 5L, 3L, 3L, 4L, 1L, 4L, 
1L, 0L, 6L, 3L, 1L, 4L, 1L, 1L, 2L, 5L, 2L, 3L, 2L, 2L, 2L, 4L, 
0L, 1L, 3L, 0L, 3L, 2L, 1L, 4L, 1L, 8L, 4L, 6L, 1L, 3L, 3L, 3L, 
1L, 2L, 1L, 1L, 0L, 1L, 4L, 1L, 1L, 1L, 2L, 3L, 3L, 3L, 0L, 1L, 
2L, 4L, 2L, 2L, 3L, 0L, 2L, 4L, 2L, 2L, 1L, 2L, 2L, 1L, 3L, 3L, 
1L, 3L, 2L, 4L, 1L, 1L, 4L, 3L, 5L, 1L, 6L, 1L, 4L, 0L, 4L, 2L, 
0L, 1L, 4L, 2L, 1L, 1L, 3L, 2L, 1L, 2L, 3L, 2L, 3L, 3L, 1L, 2L, 
3L, 1L, 0L, 4L, 2L, 2L, 1L, 3L, 3L, 2L, 1L, 1L, 0L, 1L, 3L, 2L, 
2L, 5L, 0L, 3L, 3L, 3L, 3L, 1L, 1L, 6L, 2L, 2L, 4L, 2L, 6L, 1L, 
5L, 2L, 2L, 1L, 2L, 2L, 0L, 0L, 1L, 2L, 3L, 2L, 4L, 0L, 6L, 1L, 
0L, 0L, 2L, 3L, 7L, 2L, 1L, 2L, 2L, 0L, 1L, 2L, 1L, 1L, 3L, 1L, 
1L, 4L, 2L, 6L, 2L, 1L, 4L, 5L, 2L, 3L, 4L, 3L, 2L, 3L, 7L, 2L, 
3L, 4L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 0L, 0L, 2L, 0L, 0L, 0L, 1L, 
0L, 2L, 0L, 2L, 2L, 2L, 1L, 0L, 0L, 2L, 3L, 4L, 7L, 3L, 3L, 1L, 
1L, 1L, 3L, 2L, 2L, 1L, 4L, 2L)), row.names = c(NA, -441L), class = "data.frame")
Reasons:
  • Blacklisted phrase (0.5): Thank you
  • Blacklisted phrase (1): is it possible to
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • High reputation (-1):
Posted by: Friede