用xyplot绘制两个大小的矢量长度

时间:2013-08-21 16:12:04

标签: r plot lattice linear-interpolation

请注意,这是一个简化版本(因此与我之前的帖子重复):

https://stackoverflow.com/questions/18358694/xyplot-2-separate-data-frame-lengths

它很可能包含太多信息,但是要求提供非常基本的信息。

再次在这里:

我想用xyplot绘制2个不同长度的列(请仅使用xyplot)。

数据:

Data <- data.frame(var1=rnorm(10,0,1),prob=seq(0.023,0.365,length=10))
Long <- data.frame(var2=rnorm(20,2,3))

如何将长度为20的Long(var2)向量绘制到“数据”的图上,其中首先绘制(prob~var1)。

1 个答案:

答案 0 :(得分:1)

您可以在调用xyplot时使用approx()Data$prob作为调用中的单独变量传递后插入Long$var2的值。请注意自定义预设图以调整限制。

lattice::xyplot(prob ~ var1, data = Data, z = Long$var2,
                xlab = "Var1, Var2",
                prepanel = function(x, y, z, ...) {
                  list(xlim = range(x, z),
                       ylim = range(y))
                },
                panel = function(x, y, z, ...) {
                  b <- approx(y, n = length(z))$y
                  panel.xyplot(x, y, ...)
                  panel.xyplot(z, b, col = "orange", ...)
                })

Imgur

编辑:实际上,首先重塑数据要简洁得多。

dd <- rbind(data.frame(var = "var1",
                       val = Data$var1,
                       prob = Data$prob),
            data.frame(var = "var2",
                       val = Long$var2,
                       prob = approx(Data$prob, n = 20)$y))

xyplot(prob ~ val, data = dd, groups = var, auto.key = TRUE)

Imgur