如何在合并相似单元格的情况下保存 levelplot()
How to save levelplot() with like cells merged
假设我有一个轮廓如下的热图:
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,它是 squeaky-clean 矢量图像,我可以重新缩放并包含在会议海报中(使用例如 Inkscape)。事实证明,在这种情况下,like-colored 区域实际上是单独的栅格单元,而不是合并的多边形,这意味着有大量的顶点, 在海报中包含几个这样的表面后,它会占用内存并减慢 Inkscape 的速度。最简单的解决方案是从 R 中保存到理想的 merged-cell 格式,其中连续的 like-colored 区域是 unified/merged polygon()
s 或类似的,从而将顶点数减少一个数量级或更多。
我的问题是是否有一些表面功能已经默认执行此操作,或者是否有一种省力的方式来模拟这种表面输出。 high-effort 方法将深入研究 R 的空间函数以合并类似的单元格,但我宁愿避免这种情况。提前致谢!
这是"high-effort approach"(不是真的)
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)
假设我有一个轮廓如下的热图:
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,它是 squeaky-clean 矢量图像,我可以重新缩放并包含在会议海报中(使用例如 Inkscape)。事实证明,在这种情况下,like-colored 区域实际上是单独的栅格单元,而不是合并的多边形,这意味着有大量的顶点, 在海报中包含几个这样的表面后,它会占用内存并减慢 Inkscape 的速度。最简单的解决方案是从 R 中保存到理想的 merged-cell 格式,其中连续的 like-colored 区域是 unified/merged polygon()
s 或类似的,从而将顶点数减少一个数量级或更多。
我的问题是是否有一些表面功能已经默认执行此操作,或者是否有一种省力的方式来模拟这种表面输出。 high-effort 方法将深入研究 R 的空间函数以合并类似的单元格,但我宁愿避免这种情况。提前致谢!
这是"high-effort approach"(不是真的)
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)