растровый пакет: Линии вокруг каждой ячейки

Я хочу иметь черные линии вокруг каждой ячейки растра. Ниже приведены данные для примера. Я имею в виду, вместо этой рамки/клеток без полей

введите здесь описание изображения

Я хочу это (ячейки с границами)

введите здесь описание изображения Как этого добиться?

 library(raster)
 require(graphics)
 require(grDevices)
 library(colorRamps)

 data<-matrix(c(1,0.4,0.5,0.8,-0.9,0.3,-0.89,-0.62,-0.33),ncol=3)

  r <- raster(nrows=dim(data)[1],ncols=dim(data)[2],
               xmn=-1,xmx=1,ymn=-1,ymx=1)
  r[]<-data
  setValues(r,factor(data))
  plot(r,col=c(topo.colors(200)),axes=FALSE,box=FALSE)

person Novice    schedule 25.07.2015    source источник
comment
Ваш текущий код не работает. r[] <- numeric выдает ошибку. Кроме того, setValues() нужно присвоить чему-то.   -  person bdemarest    schedule 25.07.2015
comment
Конечно, спасибо! Я заменил numeric на data. Теперь это должно работать!   -  person Novice    schedule 26.07.2015


Ответы (2)


Вы можете использовать rasterToPolygons:

plot(r, col=c(topo.colors(200)), axes=FALSE, box=FALSE)
plot(rasterToPolygons(r), add=TRUE, border='black', lwd=1) 
person Jota    schedule 25.07.2015

Если вы готовы использовать ggplot2, я предлагаю возможное решение с использованием geom_tile(). Пиксели можно выделить, используя аргумент colour для geom_tile. Недостатком является то, что ваши данные могут нуждаться в некотором переформатировании для использования с ggplot2.

library(ggplot2)
library(reshape2)

dat = melt(volcano[26:40, 26:40])

p = ggplot(dat, aes(x=Var1, y=Var2, fill=value)) +
    geom_tile(colour="grey20") +
    scale_fill_gradientn(colours = terrain.colors(10))

ggsave("tile_plot.png", plot=p, height=6, width=7, dpi=150)

введите описание изображения здесь

person bdemarest    schedule 25.07.2015
comment
Это выглядит действительно хорошо - в следующий раз я бы рассмотрел ggplot2. Кажется, это намного проще! - person Novice; 26.07.2015