【问题标题】:Dataset with NaN values for a filled contour plot with R [closed]具有 NaN 值的数据集,用于带有 R 的填充等高线图 [关闭]
【发布时间】:2015-06-04 07:29:20
【问题描述】:

我无法使用 R 正确绘制我的数据。我从足球场获得了测量值,但我没有为每个网格填充测量值。

这是我在https://db.tt/1L7cxilB的数据集contour_map_R.csv

使用图像函数绘制它看起来像这样。

任何人都可以提供一个示例来创建填充的等高线图吗?

非常感谢!

【问题讨论】:

  • 您希望它是什么样子?我不确定你在这里问什么。
  • 我认为数据不够密集,无法支持轮廓估计。

标签: r contour


【解决方案1】:

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

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)

##  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)

如果这就是您要查找的内容,您可以通过在插值栅格(tpip)上使用 filledContour() 函数来获得填充轮廓。

【讨论】:

  • 非常感谢!!如何设置 xlim 和 ylim 从 0 到 1??
  • 您基本上需要使绘图区域与您的光栅尺寸相匹配。这可能很重要,但这个question/answer 有望为您提供一个良好的起点。
猜你喜欢
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2018-03-05
相关资源
最近更新 更多