R: добавление альфа-пакетов на 2d или 3d scatterplot

Я знаю что вggplot2 можно добавить выпуклую оболочку к диаграмме рассеяния по группам, как в

library(ggplot2)
library(plyr)
data(iris)
df<-iris
find_hull <- function(df) df[chull(df$Sepal.Length, df$Sepal.Width), ]
hulls <- ddply(df, "Species", find_hull)
plot <- ggplot(data = df, aes(x = Sepal.Length, y = Sepal.Width, colour=Species, fill = Species)) +
    geom_point() + 
    geom_polygon(data = hulls, alpha = 0.5) +
    labs(x = "Sepal.Length", y = "Sepal.Width")
plot

Мне было интересно, однако, как можно вместо этого вычислить и добавить альфа-мешки, то есть самый большой выпуклый корпус, который содержит по крайней мере пропорцию 1-альфа из всех точек? Либо в 2d (для отображения с помощью ggplot2), либо в 3d (для отображения с помощью rgl).

РЕДАКТИРОВАТЬ: Моя первоначальная идея состояла в том, чтобы продолжать «очищать» выпуклую оболочку, поскольку критерий содержания по крайней мере заданного% точек будет удовлетворен, хотя в статьеВот кажется, что они используют другой алгоритм (isodepth, который, кажется, реализован в глубине пакета R, в функцииisodepth а такжеaplpack :: plothulls кажется также близким к тому, что я хочу (хотя он производит полный сюжет, а не только контур), поэтому я думаю, что с этим я могу быть отсортирован. Хотя эти функции работают только в 2D, и я также был бы заинтересован в 3D-расширении (будет построено в rgl). Если у кого-нибудь есть указатели, дайте мне знать!

EDIT2: с функциейdepth::isodepth Я нашел 2d-решение (см. Пост ниже), хотя я все еще ищу 3D-решение - если кто-нибудь узнает, как это сделать, пожалуйста, дайте мне знать!

Ответы на вопрос(2)

Ваш ответ на вопрос