如何在R中平滑用图像函数生成的图?

时间:2017-07-14 21:25:01

标签: r plot

我制作了一个带有R base函数的高程图" image"。尽管如此,我希望在各级之间获得更平滑的过渡,以使图像看起来像素化更少。逻辑解决方案是添加更宽的调色板,我已经做过,但结果还不令人满意。如何在不改变坐标系的情况下获得良好的平滑效果(我需要覆盖一系列的段和点)?

x <- 10*(1:nrow(volcano))
y <- 10*(1:ncol(volcano))
shades = colorRampPalette(c("yellow", "red"))
image(x, y, volcano,
col=shades(100),breaks=seq(min(volcano),max(volcano),
(max(volcano)- min(volcano))/100),axes = FALSE)
segments(x0=c(100,600), x1=c(600,100), 
     y0=c(100,600),
     y1=c(600,100))
points(x=seq(100,800,100), y=rep(300,8),pch=16,col="blue",cex=3)
axis(1, at = seq(100, 800, by = 100))
axis(2, at = seq(100, 600, by = 100))

1 个答案:

答案 0 :(得分:5)

由于某些原因,interpolate=FALSE中的image.default是硬编码的,但您可以直接使用较低级别的rasterImage函数:

m <- cut(scales::rescale(volcano), 100)
levels(m) <- shades(100)
m <- as.character(m)
dim(m) <- dim(volcano)
m <- t(m)[ncol(m):1,]

rasterImage(as.raster(m), min(x), min(y), max(x), max(y), interpolate = TRUE)

并排比较:

enter image description here