我使用ggplot2
在同一图表中绘制了两个具有相同独立变量和不同自变量的回归模型。我想添加一个对应于每个不同因变量的图例。其他职位建议使用melt()
函数来做到这一点,但是,如何在保留模型输出的同时做到这一点还不清楚。例如:在同一ggplot2上创建不同模型和数据集的图例
require(ggplot2)
set.seed(123)
dat <- data.frame(x = rnorm(100), z = rnorm(100), y1 = rnorm(100), y2 = rnorm(100))
dat1 <- dat[,c(1,2,3)]
dat2 <- dat[,c(1,2,4)]
mod1 <- lm(y1 ~ x + z, data = dat1)
mod2 <- lm(y2 ~ x + z, data = dat2)
dat1$mod1 <- predict(mod1, newdata =dat1)
err <- predict(mod1, newdata =dat1, se = TRUE)
dat1$ucl <- err$fit + 1.96 * err$se.fit
dat1$lcl <- err$fit - 1.96 * err$se.fit
dat2$mod2 <- predict(mod2, newdata =dat2)
err <- predict(mod2, newdata =dat2, se = TRUE)
dat2$ucl <- err$fit + 1.96 * err$se.fit
dat2$lcl <- err$fit - 1.96 * err$se.fit
ggplot(dat1) +
geom_point(aes(x = x, y = mod1), size = .8, colour = "black") +
geom_smooth(data = dat1, aes(x= x, y = mod1, ymin = lcl, ymax = ucl),
size = 1, colour = "darkblue", se = TRUE, stat = "smooth",
method = "lm") +
geom_point(data = dat2, aes(x = x, y = mod2), size = .8, colour = "black") +
geom_smooth(data = dat2, aes(x= x, y = mod2, ymin = lcl, ymax = ucl),
size = 1, colour = "darkred", se = TRUE, stat = "smooth",
method = "lm") +
scale_colour_manual(values = c("y1" = "darkred", "y2" = "red"))
有关如何做到这一点的任何想法?谢谢。
您对'ggplot'呼叫使用3个数据帧(DAT,DAT1,DAT2),但你的代码仅创建'dat'。正如你所指出的,答案可能涉及到'melt()',但是一旦你修复了数据创建代码以对应于'ggplot'引用的数据帧,它就会更容易帮助你。致歉; – eipi10
道歉;适当编辑。 –