從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