【发布时间】:2015-11-09 11:06:53
【问题描述】:
我正在尝试使用 ggplot 在下图中添加一条回归线,但它一直给我带来模糊的错误。我是新手,关于这个主题的其他问题都没有解决我的问题,所以请不要因为已经回答的类似问题而生气。
library(UsingR,ggplot2); data(galton)
y <- galton$child
x <- galton$parent
freqData <- as.data.frame(table(galton$child, galton$parent))
names(freqData) <- c("child", "parent", "freq")
regression <- coef(lm(y~x))
freqData <- freqData[freqData$freq > 0,]
g <- ggplot(data=freqData, aes(x = parent, y = child))
g <- g + scale_size(range = c(2,20), guide = 'none')
g <- g + geom_point(colour="grey50", aes(size=freq+20,show_guide=FALSE))
g <- g + geom_point(aes(colour=freq,size=freq))
g <- g + scale_colour_gradient(low="lightblue",high="darkblue")
我尝试了以下命令:
g <- g + geom_smooth(method="lm",se=FALSE)
(它会产生这个错误:geom_smooth: Only one unique x value each group.Maybe you want aes(group = 1)?)
和
g <- g + geom_abline(intercept = 28.942, slope = 0.646,colour = "red",size = 3)
(但我的情节上什么都没有出现......)
【问题讨论】:
-
在创建freqData的过程中,你的'child'和'parent'变量已经变成了因子。 (您可以通过
str(freqData)进行检查。两种解决方案:转换为数字,或使用 split/apply 或 data.table 或 dplyr 方法来生成 freqData,该方法首先不会将您的数字变量转换为因子。跨度> -
你不打算把它写成一个解决方案并附上一个情节。这是一个看起来很酷的情节。
标签: r ggplot2 regression