Как наложить строку для объекта lm на ggplot2 scatterplot

Apache Ленг свободного городского населения ReflectionToStringBuilder делает это для Вас.

import org.apache.commons.lang3.builder.ReflectionToStringBuilder

// your code goes here

public String toString() {
   return ReflectionToStringBuilder.toString(this);
}

11
задан PaulHurleyuk 25 September 2009 в 08:53
поделиться

2 ответа

The easiest option is to use geom_smooth() and let ggplot2 fit the model for you.

ggplot(calvarbyruno.1, aes(y = PAR, x = Nominal, weight=Nominal^calweight)) + 
    geom_smooth(method = "lm") + 
    geom_smooth(method = "lm", formula = y ~ poly(x, 2), colour = "red") + 
    geom_point() + 
    coord_flip()

Illustration using geom_smooth

Or you can create a new dataset with the predicted values.

newdata <- data.frame(Nominal = pretty(calvarbyruno.1$Nominal, 100))
newdata$Linear <- predict(callin.1, newdata = newdata)
newdata$Quadratic <- predict(calquad.1, newdata = newdata)
require(reshape2)
newdata <- melt(newdata, id.vars = "Nominal", variable.name = "Model")
ggplot(calvarbyruno.1, aes(x = PAR, y = Nominal, weight=Nominal^calweight)) + 
    geom_line(data = newdata, aes(x = value, colour = Model)) + 
    geom_point()
30
ответ дан 3 December 2019 в 01:29
поделиться

Ранее я задавал связанный вопрос, и Хэдли получил этот хороший ответ . Используя функцию прогнозирования из этого сообщения, вы можете добавить к своим данным два столбца. По одному для каждой модели:

calvarbyruno.1$calQuad <- predict(calquad.1)
calvarbyruno.1$callin <- predict(callin.1)

Затем нужно построить точку и добавить каждую модель в виде линии:

ggplot() + 
geom_point(data=calvarbyruno.1, aes(PAR, Nominal), colour="green") + 
geom_line(data=calvarbyruno.1, aes(calQuad, Nominal), colour="red" ) + 
geom_line(data=calvarbyruno.1, aes(callin, Nominal), colour="blue" ) + 
opts(aspect.ratio = 1)

В результате получится красивая картинка (да, с цветами можно немного поработать):

alt text
(источник : cerebralmastication.com )

10
ответ дан 3 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: