具有重叠的二元密度等值线图的散点图矩阵被卡在晶格r中

时间:2015-08-11 16:20:25

标签: r scatter-plot density-plot

我使用_setup()创建一个散点图矩阵,其中包含双变量核密度函数的重叠等高线图。下面的代码给出了一个奇怪的行为,其中轮廓图仅部分绘制,从底部开始并在顶部切断。绘制的数量取决于latticen的值。

MASS::kde2d

打开并打印中间值的摘要似乎表明函数的行为符合预期,并给出了预期范围内的值。知道发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

好的,事实证明...将旧的下标参数传递给新的面板函数。由于iris数据有25 * 25 = 125个下标,panel.contourplot仅考虑其xyz参数的前125个元素。以下内容可以解决这个问题。

splom(iris, upper.panel = function(x, y, subscripts, ...) {
  if(is.numeric(x) & is.numeric(y)){

    # calculate bivariate kernel density 
    v <- current.panel.limits() # allows full bleed by setting limits explicitly
    f1 <- kde2d(x = x, y = y, n = 50, lims = c(v$xlim, v$ylim))

    f <- data.frame(x = f1$x, y = rep(f1$y, each = length(f1$x)), 
                    z = as.vector(f1$z))
    panel.contourplot(f$x, f$y, f$z, contour = TRUE, 
                      subscripts = 1:dim(f)[1], ...)
  }
  panel.xyplot(x, y, subscripts = subscripts, ...)
})

虽然我们正在使用它,但是我投入了一些代码来使levelplot占据整个面板,而不是在边缘周围有令人讨厌的白色边框。好多了!