Ordering of points in R lines plot

不想你离开。 提交于 2019-11-28 04:00:14

问题


I want to add a fitted line of a quadratic fit to a scatteprlot, but the ordering of the points is somehow messed up.

attach(mtcars)
plot(hp, mpg)
fit <- lm(mpg ~ hp + I(hp^2))
summary(fit)
res <- data.frame(cbind(mpg, fitted(fit), hp))
with(res, plot(hp, mpg))
with(res, lines(hp, V2))

This draws lines all over the place, as opposed to the smooh fit through the scatterplot. I'm sure this is pretty straightforward, but I'm a little stumped.


回答1:


When you plot a line, all the points are connected in the order they were received. Looks like you want to sort your hp values before connecting the points

res <- data.frame(cbind(mpg, fitted(fit), hp))
res <- res[order(hp), ]
with(res, plot(hp, mpg))
with(res, lines(hp, V2))

to get

Also, to get a smoother line, you might considering predicting at points other than just the hp values you observed. After you fit your model, you can do

php <- seq(min(hp), max(hp), length.out=100)
p <- predict(fit, newdata=data.frame(hp=php))
plot(hp, mpg)
lines(php, p)



来源:https://stackoverflow.com/questions/25730676/ordering-of-points-in-r-lines-plot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!