在同一图表上的ggplot2中绘制多个不相关的图

时间:2014-07-29 23:22:32

标签: r ggplot2 spline smoothing

如何在smooth.spline()散点图中使用ggplot2方法?

如果我的数据位于名为data的数据框中,则包含两列xy

smooth.spline将是sm <- smooth.spline(data$x, data$y)。我相信我应该使用geom_line()sm$xsm$y作为xy坐标。但是,如何在同一图表上绘制完全不相关的散点图和线图?我怀疑它与aes()有关,但我有点困惑。

1 个答案:

答案 0 :(得分:1)

您可以在不同的geom中使用不同的数据(框架)并使用aes调用相关变量,或者您可以组合smooth.spline输出中的相关变量

# example data
set.seed(1)
dat <- data.frame(x = rnorm(20, 10,2))
dat$y <- dat$x^2 - 20*dat$x + rnorm(20,10,2)

# spline
s <- smooth.spline(dat)

# plot - combine the original x & y and the fitted values returned by 
# smooth.spline into a data.frame

library(ggplot2)

ggplot(data.frame(x=s$data$x, y=s$data$y, xfit=s$x, yfit=s$y)) +
                      geom_point(aes(x,y)) + geom_line(aes(xfit, yfit))

# or you could use geom_smooth    
ggplot(dat, aes(x , y)) + geom_point() + geom_smooth()