从interp
的文档,关于xo
论点:
输出网格的x坐标的矢量。 默认值是在x的范围内均匀间隔的40点 。
所以在fld
的X可能不包括相应的最大值或最小值A1值x值。
通过增加xo
和yo
的点数,最大内插值将接近实际最大值。例如,
set.seed(100)
x <- rnorm(1398)
y <- rnorm(1398)
a1 <- rnorm(1398)
data <- data.frame(x, y, a1)
fld <- with(data, interp(x,y,a1))
fld2 <- with(data, interp(x,y,a1, xo=seq(min(x), max(x), length=1000), yo=seq(min(y), max(y), length=1000)))
max(a1, na.rm=TRUE)
#[1] 2.949
max(fld$z, na.rm=TRUE)
#[1] 2.481
max(fld2$z, na.rm=TRUE)
#[1] 2.902
此外,如果你想插Z到包括你的最大和最小A1,添加相应的x和y的值XO哟。例如,这是如何让它包含a1的最大值。
max.a1.x <- x[which.max(a1)]
max.a1.y <- y[which.max(a1)]
# these have to be sorted, since filled.contour will expect them to be.
xo <- sort(c(seq(min(x), max(x), length=40), max.a1.x))
yo <- sort(c(seq(min(y), max(y), length=40), max.a1.y))
fld3 <- with(data, interp(x,y,a1, xo=xo, yo=yo))
filled.contour(x=fld3$x,y=fld3$y,z=fld3$z,
color.palette=colorRampPalette(c("white", "blue")))
max(fld3$z, na.rm=TRUE)
# [1] 2.949
我无法复制此内容。按预期将'range(a1)'作为'-2.931849 3.077989'。从干净的R会话再试一次。 – Spacedman
更具体地说,'set.seed(101);范围(rnorm(1398))给出了-3.177210 3.178489,并且应该总是给出大约(-3,3)的值。否则'a1'正在以不同的方式产生,或'rnorm'被破坏(!) –
是的,它是以其他方式产生的。 – MikiBV