R ggplot中通过多个方面的一次回归

R ggplot中通过多个方面的一次回归,r,ggplot2,facet,lm,R,Ggplot2,Facet,Lm,我试图通过一个有20个方面的图形来拟合一个线性回归(实际上有9个)。每次我拟合回归(使用geom_smooth using method=lm)时,它拟合20条线,每个面一条,但是我希望每个ReefSpecies组合的一条线穿过所有20个面 这是我的数字: 以下是我到目前为止的情况: Biomass <- c(20, 10, 5, 4, 5, 7, 8, 22, 13, 13, 15, 18, 2, 5, 7, 10) Season <- c("Winter", "Spring",

我试图通过一个有20个方面的图形来拟合一个线性回归(实际上有9个)。每次我拟合回归(使用geom_smooth using method=lm)时,它拟合20条线,每个面一条,但是我希望每个ReefSpecies组合的一条线穿过所有20个面

这是我的数字:

以下是我到目前为止的情况:

Biomass <- c(20, 10, 5, 4, 5, 7, 8, 22, 13, 13, 15, 18, 2, 5, 7, 10)
Season <- c("Winter", "Spring", "Summer", "Fall")
Year <- c("1", "2", "3", "4")
ReefSpecies <- c("Admiral Ma", "Jaap Mf", "Grecian Ma", "Alligator Mf", "Jaap Mf", "Grecian Ma", "Alligator Mf", "Admiral Ma", "Grecian Ma", "Alligator Mf", "Admiral Ma", "Jaap Mf", "Alligator Mf", "Admiral Ma", "Jaap Mf","Grecian Ma")
Seasonal <- data.frame(Biomass, Season, Year, ReefSpecies)

testp <- ggplot(data = Seasonal, aes(x = Season, y = Biomass, group =        ReefSpecies, fill = ReefSpecies, colour = ReefSpecies))
testp <- testp + geom_point(stat = "identity", position="identity", inherit.aes = TRUE)
testp <- testp + facet_grid(. ~ Year, scales="fixed")
testp <- testp + theme(axis.text.x = element_text(angle = 90))
testp <- testp + theme(panel.margin.x = unit(0, "lines"))
testp <- testp + theme(legend.position = "top")
testp

biomic根据评论,您确实不想这样做(您可以这样做)

你想要做的是在所有方面都有一个单一的回归。我认为如果没有一些黑客,这是不可能的。你可以试试

<>但是,我建议退一步考虑为什么要这样做,什么是平滑的方法。也许这意味着刻面不是正确的选择?在这种情况下,你可以考虑定义一个<>代码>时间>代码>变量,这些变量在过去的几年里是季节性的,并且没有这个方面的回归。 一个示例(使用经过调整的数据,因为您的示例数据每年的观察次数不超过一次):


Year请让你的问题重现。在这种情况下,请提供一些数据,以便我们重现你的问题。ggplotGrob内容和所有主题元素与你的问题无关,只会让帖子看起来很难。里面的内容
geom_point()
也是不必要的。我建议,无论您使用哪条线来拟合回归(stat_smooth还是什么?),您都应该在该层中专门设置
美学。请注意如何在初始
ggplot()中
call,您正在设置分组和着色美学,除非另行指定,否则这些美学将由所有其他层继承。您可以添加类似于
+geom_smooth(method=“lm”,aes(group=1))的内容
编辑以添加一个小的模拟数据集!谢谢!可能是密切相关的。很抱歉措辞不正确。在您的图中,我需要4条回归线,每种ReefSpecies组合一条回归线将穿过4个facets@aosmith第一个链接似乎是我想要的,但是如果我告诉你我知道代码中发生了什么,我会撒个小谎请不要链接@aosmith对问题的评论?也就是说,Thx。对于误解,请原谅,也许可以将问题重新表述清楚?第二句话有点长,尽管重读它我明白你的意思。但是,最终你希望季节在每年都有不同的含义?我认为在GGAN中没有办法做到这一点通过
gtable
或与链接答案类似的方式,在没有黑客攻击的情况下使用facet。
Year <- sort(rep(Year, 4))
Seasonal <- data.frame(Biomass, Season, Year, ReefSpecies)
Seasonal$Time <- interaction(Season, Year)

ggplot(Seasonal, aes( Time,  Biomass, color=ReefSpecies)) + 
  geom_point() +
  geom_smooth(aes(group=ReefSpecies), method="lm")