R:矩阵的预定义背景色

R:矩阵的预定义背景色,r,latex,knitr,R,Latex,Knitr,在报告中,我想表示日期之间的状态变化矩阵。 假设我有这样一个矩阵: B = data.frame(c(0, 0, 0, 5, 0, 0,5,0,0,5,0,0,5,0,0,0), nrow=4, ncol=4) dimnames(B)<-list(c("A","B","C","D"),c("D","C","B","A")) D C B A A 0 0 0 5 B 0 0 5 0 C 0 5 0 0 D 5 0 0 0 从D->C->B->A的任何更改都将是一种改进,而从A->B-

在报告中,我想表示日期之间的状态变化矩阵。 假设我有这样一个矩阵:

B = data.frame(c(0, 0, 0, 5, 0, 0,5,0,0,5,0,0,5,0,0,0), nrow=4, ncol=4) 
dimnames(B)<-list(c("A","B","C","D"),c("D","C","B","A"))
  D C B A
A 0 0 0 5
B 0 0 5 0
C 0 5 0 0
D 5 0 0 0
从D->C->B->A的任何更改都将是一种改进,而从A->B->C->D的任何更改都将是一个问题

我希望在knitr文档中使用这种表示,在我的矩阵中,对角线为中性背景色,5,然后在对角线右侧为绿色,左侧为红色。有什么建议吗?数字无论如何都应该出现,并且不应该改变背景颜色


欢迎就代表这一点的替代方案提出进一步建议

没有“手工制作”矩阵的图像命令的新版本


没有“手工制作”图像命令矩阵的新版本


如何创建矩阵值?手工?@agstudy:是的,但我用非手工制作的矩阵更新了答案。@Jörg是的,你做得很好!这个解决方案非常有效。非常感谢。我将从一个相当大的数据帧的xtabs中得到矩阵值,最后得到一个可变大小的矩阵x8x8或9x9。关于如何在解决方案中使用xtabs输出有什么建议吗?我肯定错过了一些东西。。。OP不清楚,D->C->B->A…@JörgMäder有任何变化。你对我来说太快了。你更新了答案,而我还在想怎么问你你回答了什么!再次感谢!如何创建矩阵值?手工?@agstudy:是的,但我用非手工制作的矩阵更新了答案。@Jörg是的,你做得很好!这个解决方案非常有效。非常感谢。我将从一个相当大的数据帧的xtabs中得到矩阵值,最后得到一个可变大小的矩阵x8x8或9x9。关于如何在解决方案中使用xtabs输出有什么建议吗?我肯定错过了一些东西。。。OP不清楚,D->C->B->A…@JörgMäder有任何变化。你对我来说太快了。你更新了答案,而我还在想怎么问你你回答了什么!再次感谢!
## the input data as vector (as in the question)
## size has to be a square number
values <- c(0, 0, 0, 5, 0, 0,5,0,0,5,0,0,5,0,0,0)

size <- sqrt(length(values))
a <- matrix(0, nrow=size, ncol=size)
a[lower.tri(a)] <- +1
a[upper.tri(a)] <- -1
image(a,col=c('red','transparent','green'),xaxt='n',yaxt='n',xlab='',ylab='')
text(rep(seq(1,0,len=size),len=size*size),rep(seq(0,1,len=size),each=size),values)