我正在尝试在LateX中创建一个表格,其中我的单元格的背景颜色取决于数字的大小。我在https://tex.stackexchange.com/questions/42444/parametrize-shading-in-table-through-tikz找到了一些答案,但我不能让它们与Sweave结合使用。下面是在前面提到的页面上给出的第一个答案,它直到我使用Sweave的部分,虽然我有一个印象,Sweave给出了正确的输出。
我也尝试过关于这个主题的其他答案,但我不能让它们与Sweave结合使用。如果有人可以让下面的代码工作,或者知道用Sweave做另一种方法,那将非常感谢!
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\pgfplotstableset{
color cells/.style={
col sep=comma,
string type,
postproc cell content/.code={%
\pgfkeysalso{@cell content=\rule{0cm}{2.4ex}\cellcolor{black!##1}\pgfmathtruncatemacro\number{##1}\ifnum\number>50\color{white}\fi##1}%
},
columns/x/.style={
column name={},
postproc cell content/.code={}
}
}
}
\begin{document}
\SweaveOpts{concordance=TRUE}
\begin{table}\caption{Correlation or something}
\centering
\pgfplotstabletypeset[color cells]{
x,a,b,a1,b1
a,90,10.5,0,0
b,0,80,10,10
a1,0,0,95,5
b1,0,10,5,85
}
\end{table}
\begin{table}\caption{Correlation or something2}
\centering
\pgfplotstabletypeset[color cells]{
<<echo=FALSE, results=tex>>=
xx<-data.frame(a=c(90,10.5,0,0),b=c(0,80,10,10),a1=c(0,0,95,5),b1=c(0,10,5,85))
rownames(xx)=c('a','b','a1','b1')
for(i in 0: nrow(xx)){
if(i==0){
cat(c("x,",paste0(colnames(xx)[1:(ncol(xx)-1)],","),colnames(xx)[ncol(xx)]),"\n")
}else{
cat(paste0(rownames(xx)[i],","),paste0(xx[i,1:(nrow(xx)-1)],","),xx[i,nrow(xx)],"\n")
}
}
@
}
\end{table}
\end{document}