我在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创建的散点图上绘制椭圆吗?
答案 0 :(得分:1)
我今天遇到了同样的问题!这是您的情况的解决方案。首先,请确保您使用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)处的填充半透明椭圆。如果您不希望填充它,只需剪切fill和alpha参数,然后用geom_path()替换geom_polygon()即可。
希望这会有所帮助!
答案 1 :(得分:0)
这里是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")