I want to create latex tables of values where the cell background is shaded according to the
table value.  For example:

set.seed(1) # reproducibility
mat <- matrix(3 * rnorm(12), 3, 4)
rownames(mat) <- letters[1:3]
colnames(mat) <- LETTERS[1:4]

> round(mat,1)
     A    B   C    D
a -1.9  4.8 1.5 -0.9
b  0.6  1.0 2.2  4.5
c -2.5 -2.5 1.7  1.2

# colors to use:  blue(+), red(-) with two shading levels,
# depending on abs(x) > 2
cols <- c(rgb(0.85,0.85,1),
          rgb(0.7 ,0.7 ,1),
          rgb(1,0.85,0.85),
          rgb(1,0.7 ,0.7 ))
cols <- matrix(cols, 2,2)

cellcol <- apply(mat, 1:2,
                 function(x) {i<-1+(x>0); j<-1+(abs(x)>2); cols[i,j]})
>
> cellcol
  A         B         C         D
a "#D9D9FF" "#FFB2B2" "#B2B2FF" "#D9D9FF"
b "#B2B2FF" "#B2B2FF" "#FFB2B2" "#FFB2B2"
c "#FFD9D9" "#FFD9D9" "#B2B2FF" "#B2B2FF"

What I want is to generate a latex table of mat, with each cell colored according to cellcol. I can do this manually as shown below, using the latex colortbl package and a macro
\cell{value}{color}.  How can I produce this in R?

# colortab-test.tex -----------------------
%% Latex part:

\documentclass[11pt]{article}
\usepackage{xcolor,colortbl}

# wrap each cell with command to define background color
\newcommand{\cell}[2]{\multicolumn{1}%
   {>{\columncolor{#1}}r}{#2}}

\definecolor{blueA}{rgb}{0.85,0.85,1}
\definecolor{blueB}{rgb}{0.7 ,0.7 ,1}
\definecolor{redA}{rgb}{1,0.85,0.85}
\definecolor{redB}{rgb}{1,0.7 ,0.7 }

\begin{document}

\begin{tabular}{lcccc}
    &  A  & B  & C  & D \\
a & \cell{-1.9}{redB} & \cell{4.8}{blueA} & \cell{1.5}{blueB} & \cell{-0.9}{redB} \\ b & \cell{0.6}{blueB} & \cell{1.0}{blueB} & \cell{2.2}{blueA} & \cell{4.5}{blueA} \\ c \cell{-2.5}{redA} & \cell{-2.5}{redB} & \cell{1.7}{blueB} & \cell{1.2}{blueB} \\
\end{tabular}
\end{document}
# --------------------------------------------


--
Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept. & Chair, Quantitative Methods
York University      Voice: 416 736-2100 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to