首页 > 解决方案 > 使用 ggplot 创建多条回归线

问题描述

我有一个如下所示的数据框(数据):

在此处输入图像描述

我想使用ggplot()回归线为 Mating.system 的每个级别(MO、PG、PR)创建一个散点图。

到目前为止,我已经创建了这段代码

p <- ggplot(data, aes(x=data$Log.MF.mass, y=data$log.FM.lifespan, group=data$Mating.system)) +
  geom_point(aes(shape=data$Mating.system, color=data$Mating.system))
p <- p+labs(x="Log MF body mass", y="Log FM longevity", color="Mating system")

这会产生两个图例,我想删除底部的一个并删除其中的 NA 。

在此处输入图像描述

我想在图上画出对应于 MO、PG、PR 的三个回归线。我希望我已经很好地解释了这一点。

非常感谢您的帮助。

标签: rggplot2

解决方案


如果没有看到您的数据就无法确定,但我认为这应该可行。一些注意事项:

  • 不要data$在里面使用aes();只需使用列名
  • 你真的需要同一个变量的颜色和形状吗?
  • 用于回归使用geom_smooth()和按因子分组;您可以添加se = FALSE以删除置信区间
  • 关于NA,我个人认为应该在图例中注明那些没有交配系统的点

    ggplot(data, aes(x = Log.MF.mass, 
                     y = log.FM.lifespan)) +
      geom_point(aes(shape = Mating.system, 
                     color = Mating.system)) +
      geom_smooth(method = "lm", 
                  aes(group = Mating.system, 
                      color = Mating.system)) +
      guides(shape = FALSE)
    

推荐阅读