我使用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
道歉;適當編輯。 –