Я использую lattice
для создания матрицы диаграммы рассеяния с наложенным контурным графиком двумерной функции плотности ядра. Следующий код дает странное поведение, когда контурные графики рисуются только частично, начиная снизу и обрезая вверху. Сколько будет нарисовано, зависит от значения n
в MASS::kde2d
.
library(lattice)
library(MASS)
splom(iris, upper.panel = function(x, y, ...) {
if(is.numeric(x) & is.numeric(y)){
# calculate bivariate kernel density
f1 <- kde2d(x = x, y = y, n = 20) #, lims = c(0, 10 ,0, 10))
f <- data.frame(x = f1$x, y = rep(f1$y, each = length(f1$x)),
z = as.vector(f1$z))
panel.contourplot(x = f$x, y = f$y, z = f$z,
contour = TRUE, ...)
}
panel.xyplot(x, y, ...)
})
Поиск и печать сводок промежуточных значений, по-видимому, указывает на то, что функции ведут себя так, как ожидалось, и дают значения в ожидаемом диапазоне. Есть идеи, что происходит?