Нетрудно собрать panel.chull()
, который накладывает выпуклую оболочку на участок.Функция layer()
из latticeExtra
делает решетчатую графику чуть более похожей на ggplot ...
d <- data.frame(x=c(1,1,2),y=c(1,2,2)*100)
library(lattice)
library(latticeExtra)
panel.chull <- function(x, y, type="l", ...) {
ch <- grDevices::chull(x, y)
ch <- c(ch,ch[1]) ## close the polygon
panel.xyplot(x[ch],y[ch], type=type, ...)
}
Теперь разверните ее:
g1 <- xyplot(y~x,data=d) ## base plot
g1 + layer(panel.chull(x,y,col="red")) ## add convex hull
Примечания:
- может потребоваться немного больше работы, чтобы заставить его вести себя разумно с переменной группировки
- , если вы хотите полный диапазонто, что делает
geom_encircle
, вы, вероятно, можете импортировать кишки этого кода в свою собственную функцию панели ...