请注意,这是一个简化版本(因此与我之前的帖子重复):
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)。
答案 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", ...)
})
编辑:实际上,首先重塑数据要简洁得多。
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)