0

假设我有一个带有这样轮廓的热图:

set.seed(1)
X <- matrix(runif(100*200),nrow=100)
X <- apply(X,1,sort)
#png("Surface.png",width=800,height=400)
lattice::levelplot(t(X),contour=TRUE)
#dev.off()
getwd()

它看起来像这样: 示例等高线/曲面图

有很多方法可以在 R ( fields::image.plot(),image()等中制作这个变体。如果我将这个填充的等高线图保存为 pdf 文件,它是一个非常干净的矢量图像,我可以重新缩放并包含在会议海报中(使用例如, Inkscape)。在这种情况下,类似颜色的区域实际上是单独的栅格单元,而不是合并的多边形,这意味着大量的顶点,在海报中包含几个这样的表面后,这会占用内存并减慢 Inkscape 的速度。最简单的解决方案是从 R 中保存到理想的合并单元格格式,其中连续的类似颜色区域是统一/合并polygon()的或类似的,从而将顶点数量减少一个数量级或更多。

我的问题是是否有一些表面函数默认已经做到了这一点,或者模拟这种表面输出的简单方法。费力的方法是深入研究 R 的空间函数以合并类似单元格,但我宁愿避免这种情况。提前致谢!

4

1 回答 1

1

这是“努力的方法”(不是真的)

set.seed(1)
X <- matrix(runif(100*200),nrow=100)
X <- apply(X,1,sort)
lattice::levelplot(X,contour=TRUE)

library(raster)
r <- raster(X)
z <- cut(r, seq(0, 1, 0.1))
p <- rasterToPolygons(z, dissolve=TRUE)
spplot(p)
于 2015-04-24T06:50:26.527 回答