【问题标题】:R / ggplot2: Multiple regression lines on same axesR / ggplot2:同一轴上的多条回归线
【发布时间】:2016-01-31 20:46:59
【问题描述】:

我需要在同一轴上绘制两个回归。为此,我的数据集中有 3 列(我们称它们为 A、B 和 C)。我想绘制 B 与 A,然后绘制 C 与 A,并将它们作为不同颜色的回归线,数据点与其对应的线颜色相同。

更具体地说,为了创建单独的图,我在第一个图中使用了以下代码:

P1 <- ggplot(data=volboth, aes(x=control, y=vol30)) + 
geom_point(alpha=1, size=4, color="maroon") + 
ggtitle("Correlation Plot: Ground Survey (Control) vs 30m UAV Survey") + 
labs(x = expression(paste("Volume - Control Data - ", m^{3})), 
     y = expression(paste("Volume - Aerial Data - ", m^{3}))) + 
xlim(0, 5) + 
ylim(0, 5) + 
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)

然后是第二个情节的以下内容:

P2 <- ggplot(data=volboth, aes(x=vol10, y=control)) + 
geom_point(alpha=1, size=4, color="maroon") +
 ggtitle("Correlation Plot: Ground Survey (Control) vs 10m UAV Survey") + 
labs(x = expression(paste("Volume - Aerial Data - ", m^{3})), 
     y = expression(paste("Volume - Control Data - ", m^{3}))) + 
xlim(0, 5) + 
ylim(0, 5) + 
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)

关于如何将两个图组合到相同的轴上并应用相应的视觉主题的任何想法?如果这能让事情变得更容易,我愿意使用标准 R(不是 ggplot2)。

【问题讨论】:

  • 作为回答我自己问题的第一步,我做了以下操作,添加了我需要的两条回归线以及不同的色点。它没有做的是给回归线对应的点:
  • ggplot(volboth) + geom_jitter(aes(control,vol10), colour="blue") + geom_smooth(aes(control,vol10), method=lm, se=FALSE) + geom_jitter(aes (control,vol30), colour="green") + geom_smooth(aes(control,vol30), method=lm, se=FALSE) + labs(x = "Actual", y = "Remote")
  • 使用 ggplot2 的标准建议:melt 你的 data.frame 有一列用于 x 值,一列用于 y 值,一列将您的值映射到组/颜色。如果您需要更具体的帮助,您需要提供可重现的输入数据。
  • 如果您不确定如何执行@Roland 所说的操作,请阅读:how to make a reproducible example

标签: r ggplot2 regression correlation


【解决方案1】:
require(ggplot2)
#first, some sample data
volboth <- data.frame(control=(0:100)/20,vol10=(50:150)/50,vol30=(120:20)/30)

#next, make a plot
P1 <- ggplot(data=volboth, aes(x=control, y=vol30)) + 
  geom_point(alpha=1, size=4, color="maroon") + 
  geom_smooth(method=lm, se=FALSE, fullrange=TRUE) +
#Now add a second layer, with same x, but other y (and blue color for clarity)
  geom_point(aes(y=vol10),alpha=1, size=4, color="blue") + 
  geom_smooth(aes(y=vol10),method=lm, se=FALSE, fullrange=TRUE) +
  ggtitle("Correlation Plot: Ground Survey (Control) vs 30m UAV Survey") + 
  labs(x = expression(paste("Volume - Control Data - ", m^{3})), 
       y = expression(paste("Volume - Aerial Data - ", m^{3}))) + 
  xlim(0, 5) + 
  ylim(0, 5)

print(P1)

这给了我这个图表:
我在这里使用了geom_point,但是如果您的观点紧密结合,您已经自己制定了,geom_jitter 可能是一个更好的选择。

【讨论】:

    猜你喜欢
    • 2016-11-07
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2016-08-01
    • 2015-01-02
    • 2016-12-10
    相关资源
    最近更新 更多