2013-04-05 3 views
1

У меня есть следующий код в R, чтобы создать простую теплоизоляцию.Настройка тепловой карты в R

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

Я хочу сделать следующие 2 вещей: -

  1. Я хотел бы, NA с, что в настоящее время в белом, чтобы иметь диагональную красный (или черную) линию.
  2. Я хотел бы увеличить ширину хода вокруг каждого окна в тепловой карте, чтобы каждая ячейка была четко очерчена.

Как я могу достичь (1) и (2)?

+0

Я сильно подозреваю, что (1) будет довольно сложно (в базовой графики , как минимум). – joran

+0

Не-базовые пакеты в порядке. – Kaleb

+0

Я считаю, что трюк (1) будет рисовать красные диагонали повсюду, а затем переопределять изображение ... – Spacedman

ответ

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