這是一種可能性,使用@Vincent's code。它適用於ggplot2(v。0.9)和directlabels(v。2.5)的R-forge版本的最新版本。我也用ggplot2 0.8.9
和directlabels 2.4
測試了代碼。 (CRAN上釋放的directlabels
版本不會與ggplot2 0.9
工作,雖然。)
的想法基本上是更換您的標籤A
,B
,C
,G
與迴歸方程。當然,你可以用不同的方式存儲後者,但我認爲這會明顯地使情節表達複雜化,所以讓我們儘可能簡單。假設我們已經有@文森特的熔化的變量d
,
> head(d)
Xax variable value
1 0.22 A 0.451
2 0.34 A 0.491
3 0.54 A 0.389
4 0.34 A 0.425
5 0.53 A 0.457
6 0.12 A 0.436
讓我們更換variable
標籤,你計算的公式:
library(plyr)
lm.stats <- ddply(d, "variable",
function(u) {
r <- lm(value ~ Xax, data=u)
c(coef(r), r.squared=summary(r)$r.squared)
})
my.formatter <- function(x, digits=2) {
x <- round(x, digits=digits)
out <- paste(x[1], ifelse(x[2]>0, "+", ""), x[2], "x", sep="")
out <- paste(out, " (R2=", x[3], ")", sep="")
return(out)
}
d$variablef <- d$variable
levels(d$variablef) <- apply(lm.stats[2:4], 1, my.formatter)
的小助手功能,my.formatter
,負責組裝不同的統計你的用ddply
計算。請注意,如果我們需要後者,我提供了variable
的副本。這裏是繪圖的東西:
p <- ggplot(d, aes(Xax,value, col=variablef)) +
geom_point() +
stat_smooth(method=lm)
library(directlabels)
direct.label(p)
我要指出,你也可以有註釋的曲線從Hmisc包labcurve()
功能。我也可以想象使用ggplot或lattice的更簡單的解決方案,即只需在迴歸線上編寫回歸方程,並在x軸上進行適當的定向和輕微移動以避免重疊,但如果您的數據集發生則可能不會很便於移植改變。
來源
2012-03-05 18:20:59
chl
[這](http://stackoverflow.com/q/7549694/324364)應該讓你開始(和可以說是重複的)。將每條「每條線」放在「靠近」的地方都很難以自動化的方式明智地做到。你將有更多的運氣直接指定座標。 – joran 2012-03-05 15:50:34
謝謝,但如何從這個方程中得出錯誤?是R2還是其他變量? – ifreak 2012-03-05 16:37:14
你的問題只提到係數和R^2值。我不知道你的意思是「錯誤」。 – joran 2012-03-05 16:40:54