带有R

时间:2015-06-03 20:55:47

标签: r contour

我无法用R正确绘制我的数据。我从足球场得到了测量结果,并没有为每个网格填充测量结果。

这是我在https://db.tt/1L7cxilB

的数据集contour_map_R.csv

看起来这是使用图像功能来绘制它。

enter image description here

任何人都可以提供一个例子来创建一个填充的轮廓图?

非常感谢!

1 个答案:

答案 0 :(得分:2)

如评论中所述,您需要先获得完整的数据才能计算轮廓。因此,您必须以某种在您的情况下有意义的方式插入或替换您的缺失值。我在下面提供了几个选项,但是您需要提出使用一种方法而不是另一种方法的理由,以及是否需要更复杂的地统计方法。此外,您可以插入比当前更精细的网格,以产生更平滑的结果(以牺牲可能的数据为代价)。

d <- read.csv("contour_map_R.csv")

library(raster)
r <- raster(as.matrix(d))

contour(r)

v <- getValues(r)
xy <- xyFromCell(r, 1:ncell(r))

##  Interpolate using a thin-plate spline:
library(fields)
tps <- Tps(xy, v)

tp <- interpolate(r, tps)
plot(tp)
contour(tp, add=T)

thin-plate spline

##  Alternatively, interpolate using nearest idw():
library(gstat)

dxy <- data.frame(x=xy[,1], y=xy[,2], v)
dxy <- dxy[complete.cases(dxy),]
id <- gstat(formula = v~1, locations = ~x+y, data=dxy)

ip <- interpolate(r, id)
plot(ip)
contour(ip, nlevels=5, add=T)

IDW

如果您正在寻找的内容,则可以使用插值栅格(filledContour()tp)上的ip函数来填充轮廓。