我在向ggplots添加线性回归线时遇到麻烦。
它应该是这样的:

当前是这样的:

这是我的代码:

p <- ggplot(data = wage, aes(x = educ, y = lwage, colour = black,
                cex = IQ, pch = married, alpha = 0.7)) + geom_jitter()

p1 <- p + facet_grid(urban~experclass) + geom_smooth(se=F,method="lm")

p1 + labs(x = "Education (year)", y = "Log Wage", shape = "Marital status",
          colour = "Ethnicity") + guides(alpha = FALSE)

我的geom_smooth的位置错误吗?我想要的是该图的每个元素只有一条黑色回归线-而不是一层一层。

此外,当我添加回归线时,图例符号也会发生变化。尤其是智商传奇看起来很奇怪。这里有我没有考虑的东西吗?

外观如何:

外观:

最佳答案

我可以尝试回答您问题的至少一部分-这是关于绘制一条回归线而不是每个面板绘制两条回归线的部分。我没有您的数据,因此无法完全复制您的问题,但是我认为这可以解决问题。

原始ggplot()调用中的外观将被所有后续层(包括geom_smooth)继承。
您似乎想要的是颜色美感(恰好是一个分组标识符),该颜色美感仅适用于抖动点而不适用于线条。因此,您可以这样编写代码:

    p <- ggplot(data = wage, aes(x = educ, y = lwage,
            cex = IQ, pch = married, alpha = 0.7)) +
            geom_jitter()

    p1 <- p + facet_grid(urban~experclass) +
           geom_smooth(se=F,method="lm",
           aes(colour = black))

或者,以一种修改后的样式作为单个ggplot调用:
    p3 <- ggplot(data = wage,
                 aes(x = educ, y = lwage,
                  size = IQ, shape = married, alpha = 0.7)) +
           geom_jitter() +
           geom_smooth(se=F,method="lm",
                       aes(colour = black))+
           facet_grid(urban~experclass)
    p3

08-24 16:57