【问题标题】:ggplot2 colour geom_point by factor but geom_smooth based on all dataggplot2 color geom_point by factor 但 geom_smooth 基于所有数据
【发布时间】:2013-05-09 21:29:49
【问题描述】:

在 ggplot2 中,取自 here 的以下命令 p <- qplot(wt, mpg, data=mtcars, colour=factor(cyl)) 绘制散点图,每个点根据因子着色

我想用 geom_smooth 拟合所有数据,而不考虑因子,但根据因子保持各个点的颜色。 p + geom_smooth(method="lm") 对每个因素进行线性拟合。我该怎么做?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可以通过退出“qplot”包装函数并直接使用“ggplot”和几何函数来相当容易地做到这一点。

    ggplot(mtcars, aes(x=wt, y=mpg)) +
        geom_point(aes(colour=factor(cyl))) +
        geom_smooth(method="lm")
    

    第 1 步:设置您的初始“ggplot”设置。这些是您希望作为几何函数默认值的设置。

    ggplot(mtcars, aes(x=wt, y=mpg))
    

    在这种情况下,我们将“mtcars”数据用于所有几何图形,“wt”分配给 x 轴,“mpg”分配给 y 轴。通过在开始时指定这些,我们减少了在复制粘贴到几何函数时搞砸的风险。

    第二步:绘制点几何图形,使用'cyl'的因子为点着色。这就是最初的 'qplot' 函数所做的,但我们更明确地指定了它。

        geom_point(aes(colour=factor(cyl)))
    

    第三步:绘制平滑线性模型。这正是 OP 之前写的,但现在着色美学不再是默认设置的一部分,模型按预期绘制。

        geom_smooth(method="lm")
    

    + 将它们链接在一起!

    供参考:您可以通过在每一层中明确来轻松地做到这一点,如下所示:

    ggplot() +
        geom_point(data=mtcars, aes(x=wt, y=mpg, colour=factor(cyl))) +
        geom_smooth(data=mtcars, method="lm", aes(x=wt, y=mpg))
    

    【讨论】:

      【解决方案2】:

      在我看来,如果你开始使用ggplot() 函数而不是qplot,你会发现ggplot 要容易得多。美学的控制更有意义。在这种情况下,您只需构建您的基础:

      p <- ggplot(mtcars, aes(wt, mpg))
      

      然后在上面构建两个geoms:

      p + geom_point(aes(colour = factor(cyl))) +
        geom_smooth(method = "lm")
      

      如果这不是你想要的,请告诉我。

      【讨论】:

      • 感谢您的回复。我确实使用 ggplot() 函数而不是 qplot。只有链接网页上的示例很好地涵盖了我的问题的背景。让我感到困惑的是我现在理解的不同层次
      • 有时我提交一个答案,看到其他人写了完全相同的答案,然后想,“也许我应该再等一会儿再回答……”
      【解决方案3】:

      我同意 @alexwhan 和 @Dinre 之前的回答,即 ggplot() + geom_point(...) + ... 是解决这个问题的最佳方法

      但是,如果您只是想修改解决方案,请尝试

      p + geom_smooth(method = 'lm', aes(colour = NA), colour = 'magenta')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多