【问题标题】:R - Draw Ellipse in ScatterPlot (not* stat-ellipse)R - 在 ScatterPlot 中绘制椭圆(不是* stat-ellipse)
【发布时间】:2018-09-04 17:57:36
【问题描述】:

我在 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 当然。我相信 stat_ellipse() 在一个人的数据集群周围画一个椭圆。 (即“规范”)。相反,我想做的是在任何坐标处绘制一个椭圆,不一定*根据数据图。这有帮助吗?如果需要详细说明,请告诉我。
  • 你可能想尝试ggforce包中的geom_ellipsis(Github上的开发版,可以找到带有此功能描述的小插图here
  • @Z.Lin,你好。我无法从 ggforce 包中获取 geom_ellipsis() 工作。 R不认识,你以前用过这个包吗?
  • @user7288808 请定义“R 无法识别它”。引用确切的 R 错误消息(如果有)。

标签: r ggplot2 ellipse


【解决方案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) 处填充半透明椭圆。如果你不希望它被填充,只需剪掉填充和 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多