点阵包中 geom_encircle 的变体

variant of geom_encircle in lattice package

考虑 df:

d <- data.frame(x=c(1,1,2),y=c(1,2,2)*100)

以及以下情节:

gg <- ggplot(d,aes(x,y))
gg <- gg + scale_x_continuous(expand=c(0.5,1))
gg <- gg + scale_y_continuous(expand=c(0.5,1))

gg + geom_encircle(s_shape=1, expand=0) + geom_point()

我想知道是否有像ggplot/gggalt这样的点阵包中的图形的特定部分有任何形式的圆圈或椭圆。

将凸包叠加在绘图上的 panel.chull() 放在一起并不难。 latticeExtra 中的 layer() 函数使点阵图形更像 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

备注:

  1. 可能需要多做一些工作才能使其与分组变量的行为合理
  2. 如果您想要 geom_encircle 的所有功能,您可以将该代码的核心内容导入您自己的自定义面板功能中...