2013-04-05 45 views
1

我在R中有下面的代码来创建一个简单的热图。在R中自定义热图

data <- c(rnorm(80), rep(NA,20)) 
image(matrix(sample(data),nrow=50, ncol=2), las=1) 

我想要做以下两两件事: -

  1. 我想NA S的目前在白有一个对角线红色(或黑)线。
  2. 我想增加热图中每个盒子周围的笔画宽度,以便清楚地描绘出每个单元格。

我该如何实现(1)和(2)?

+0

我强烈怀疑,(1)将是相当困难的(在基地图形, 至少)。 – joran 2013-04-05 15:46:38

+0

非基础包装可以。 – Kaleb 2013-04-05 15:47:28

+0

我认为诀窍(1)将绘制红色对角线到处绘制图像... – Spacedman 2013-04-05 16:31:10

回答

3

这应该是接近:

# fix the data because we're going to use it twice: 
d=sample(data) 
# plot it with X and Y coords known (note 1 larger than dimension) 
image(1:51,1:3,matrix(d,nrow=50, ncol=2),las=1) 
# add diagonal shading 
polygon(x=c(1,51,51,1),y=c(1,1,3,3),density=3,col="red") 
# replot. The NA's show through: 
image(1:51,1:3,matrix(d,nrow=50, ncol=2),las=1,add=TRUE) 
# outline the cells. 
abline(h=1:3) 
abline(v=1:51) 

如果你真的想在每个箱单红色斜杠:

x0=c(1:50,1:50) 
x1=x0+1 
y0=c(rep(1,50),rep(2,50)) 
y1=y0+1 
image(1:51,1:3,matrix(d,nrow=50, ncol=2),las=1) 
segments(x0,y0,x1,y1,col="red",lwd=2) 
image(1:51,1:3,matrix(d,nrow=50, ncol=2),las=1,add=TRUE) 
abline(v=1:51);abline(h=1:3) 
+0

谢谢你的作品很棒 – Kaleb 2013-04-05 18:12:54