数据不完整的水平图

时间:2018-10-09 15:08:04

标签: r

在R中使用点阵封装:

我已经深深地陷入了兔子洞,现在我需要一些帮助才能摆脱困境。

我有一些(昂贵的)数据点,它们自然地生活在32x32的网格上,但我没有所有可能的数据点

> str(data)
'data.frame':   53 obs. of  3 variables:
$ X: num  16 16 16 16 13 13 13 13 23 23 ...
$ Y: num  20 16 23 10 16 23 20 10 16 23 ...
$ Z: num  1558 1561 1555 1540 1538 ...

当我尝试像这样使用levelplot时,

> levelplot(data$Z ~ rbind(data$X, data$X) * rbind(data$Y, data$Y), 
     xlim=c(0.5, 32.5), ylim=c(0.5, 32.5))

该地块上的彩色斑块以(对我而言)令人困惑的方式聚集在一起。 Output from levelplot

我想要实现的是,每个一对一索引对对应一个我的数据有一个彩色补丁。缺少的网格点可以保留为白色。

我试图了解R文档,但已放弃。

此外,我尝试了使用虚拟NA的网格,然后尝试填写相关的数据点。

> x <- seq(1, 32, length.out=32)
> y <- seq(1, 32, length.out=32)
> data <- expand.grid(X=x, Y=y)
> data$Z <- NA
> tmp <- res[selected_data, ]
> data[(data$X == tmp$X) & (data$Y == tmp$Y), 'Z'] <- tmp$Z
Error in `[<-.data.frame`(`*tmp*`, (data$X == tmp$Input_Channel) & (data$Y ==  : 
replacement has 53 rows, data has 1024

其中res是数据点的源,而selected_data是用于从res中选择数据的逻辑矢量。无论如何,这是行不通的。

无论如何,试图使后一种方法起作用是一个错误的转变。我宁愿使用levelplot来找到适当的解决方案,而不是失败的解决方法。

1 个答案:

答案 0 :(得分:0)

我找到了一个可行的解决方案,可以与他人分享:

> dataX <- c(seq(1, 32), rep(1, 32), tmp$X)
> dataY <- c(rep(1, 32), seq(1, 32), tmp$Y)
> dataZ <- c(rep(NA, 64), tmp$Z)
> levelplot(dataZ ~ dataX * dataY)

以这种方式添加NA可以得到所需的输出。 Desired output from levelplot