我想filled.contour
用背景图像绘制热图。我知道这filled.contour
实际上是两个图,一个可以添加,例如,带有plot.axes
. 你也可以用图像来做这个工作吗?以下代码将图像绘制在热图之上,但我希望将图片作为背景。
MyFunction <- function(x,y){
return(dnorm(sqrt(x^2+y^2)))
}
wrapper <- function(x, y, my.fun, ...) {sapply(seq_along(x), FUN = function(i) my.fun(x[i], y[i], ...))}
meshstep <- 0.5
x<- seq(-20,20,meshstep)
y <-seq(-20,20,meshstep)
z <- outer(x,y,FUN = wrapper, my.fun=MyFunction)
image <- readPNG("imagepath\\image.png")
filled.contour(
x,y,z, col=rev(heat.colors(n=20, alpha=0.7)), nlevels=15,plot.axes={
rasterImage(image, x[1], y[1],x[length(x)],y[length(y)]);
points(0,0,pch=4)
})
解决这个问题的另一种方法是
plot(x,y,type="n")
rasterImage(image, x[1], y[1],x[length(x)],y[length(y)])
filled.contour(x,y,z, add=TRUE)
而不是MWE中的最后一次filled.contour
调用,但不幸的是,没有.add=TRUE
filled.contour
我应该直接去lattice
'slevelplot
吗?