光栅包:每个单元格周围的线

7
我希望每个栅格单元都有黑色边框。以下是示例数据。 我的意思是,不要使用无边框的单元格。

enter image description here

我希望得到这样的效果(带边框的单元格)

enter image description here 我该如何实现?

 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)

2
你的代码目前无法运行。r[] <- numeric 会产生错误。另外,setValues() 需要被分配给某个变量。 - bdemarest
当然,谢谢!我用“data”替换了“numeric”。现在应该可以工作了! - Novice
2个回答

8
您可以使用rasterToPolygons
plot(r, col=c(topo.colors(200)), axes=FALSE, box=FALSE)
plot(rasterToPolygons(r), add=TRUE, border='black', lwd=1) 

5

如果你愿意使用ggplot2,我提供了一种可能的解决方案,使用geom_tile()。可以使用colour参数来描绘像素边框。缺点是你的数据可能需要重新格式化以便与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)

enter image description here


这看起来非常不错 - 下次我会考虑使用ggplot2。这似乎要容易得多! - Novice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接