【问题标题】:Plot two size vector length with xyplot用 xyplot 绘制两个大小的向量长度
【发布时间】:2013-08-21 16:12:04
【问题描述】:

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

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) 的“数据”图上。

【问题讨论】:

  • 为什么不编辑您之前的问题?还是再等一会儿才能得到答案?您之前的问题只有 2 小时。
  • @ialm。是的,这就是我保留较长版本的原因,也可以作为参考。当然只有 2 小时,但在其他地方看到这个较短的问题可能更适合某些人回答。
  • Long 中是否有prob2 变量与var2 一起使用?
  • @Max 你需要x 值和y 值才能绘图。您希望y 的值是什么Long
  • 如果您单击已发布问题上方的链接,它会解释我是如何创建“y”的。基本上这就是重点。我想将它与概率相匹配,但这太短了。

标签: r plot lattice linear-interpolation


【解决方案1】:

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

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)

【讨论】:

  • 谢谢,我有时间会检查一下。
猜你喜欢
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2017-09-06
  • 2012-07-29
  • 2013-08-13
  • 1970-01-01
相关资源
最近更新 更多