在散点图中画椭圆(不是*stat-ellipse)

5

我使用R中的ggplot创建了一个散点图:

ggplot(data, aes(x=x, y=y)) + 
  xlim(0,800) + 
  ylim(0,600) + 
  geom_point(colour="black") + 
  geom_path(aes(color="red")

我想在这个图表上画一个椭圆(请注意不是置信区间椭圆),使用中心坐标、高度和宽度。

我已经尝试了plotrix包中的draw.ellipse函数,但这只适用于R默认的plot函数创建的散点图。

是否有人知道如何在由ggplot创建的散点图上绘制椭圆?


你能详细说明一下为什么 stat_ellipse() 对你无效吗? - Z.Lin
@Z.Lin 当然可以。我相信stat_ellipse()会在数据的聚类(即“norm”)周围画一个椭圆。相反,我想要做的是在任何坐标处绘制一个椭圆,而不一定根据数据的图形来绘制。这样解释是否有帮助?如果需要更详细的说明,请告诉我。 - user7288808
你可以尝试使用ggforce包中的geom_ellipsis函数(在Github上的开发版本,该函数的说明可以在此处找到:https://github.com/thomasp85/ggforce/blob/master/vignettes/Visual_Guide.Rmd)。 - Z.Lin
@Z.Lin 你好。我无法使用ggforce软件包中的geom_ellipsis()函数。R无法识别它,你以前使用过这个软件包吗? - user7288808
@user7288808请定义“R无法识别它”。引用精确的R错误消息(如果有)。 - January
2个回答

3
我今天也遇到了同样的问题!对于你的情况,这里有解决方案。首先,请确保您使用ggplot2创建了散点图,然后下载并导入ggforce程序包。添加。"最初的回答"
geom_ellipse(aes(x0=x, y0=y, a=axis length on x direction, b=axis on y direction), fill=..., alpha=...)+geom_polygon()

在(x,y)处绘制一个填充的、半透明的椭圆。如果不需要填充,请删除填充和alpha参数,并将geom_polygon()替换为geom_path()。
希望这可以帮到你!

2
这里有一个使用PlaneGeometry包(即将在CRAN上发布)的解决方案。使用此包可以有多种定义椭圆的方法。其中“直接”方法包括提供中心,主轴半径,次轴半径和水平轴与主轴之间的角度alpha(默认为度数)。
library(ggplot2)
library(PlaneGeometry)

# define an ellipse
ell <- Ellipse$new(center = c(6,4), rmajor = 2, rminor = 1, alpha = 30)
# ellipse as a path
ellpath <- ell$path()
# the path is not closed; close it
ellpath <- rbind(ellpath, ellpath[1,])

ggplot() +
  geom_point(aes(x = Sepal.Length, y = Petal.Length), iris) +
  geom_path(aes(x = x, y = y), as.data.frame(ellpath), color = "red")

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接