在r中绘制拟合线

时间:2018-05-05 17:23:48

标签: r plot line lines

fit_bmi <- glm(df$genhlth_NC ~ poly(df$bmi_NC, 2, raw = TRUE))
plot(df$bmi_NC, df$genhlth_NC, col=rgb(red=0.2, green=0.2, blue=1.0, alpha=0.01))
lines(df$bmi_NC, predict(fit_bmi), col = 'red')

我想在我的情节上生成一条拟合线。但是,我用上面的代码得到了一个奇怪的情节。有人可以帮我吗?

Pic of Weird Plot

1 个答案:

答案 0 :(得分:1)

复制评论:您需要按x值对x和y进行排序。您还应该学习使用公式主体中没有data.frame名称的公式,并使用data参数作为数据框名称。 donvoter可能是对缺乏数据示例的反应,但是从绘制的图片中可以清楚地看出错误的来源。

我使用此代码在以前称为“注释”的文本中测试了我的建议,它似乎提供了预期的结果:

fit_bmi <- glm(genhlth ~ poly(bmi, 2, raw = TRUE), data=dat)
plot(genhlth ~ bmi, data=dat)
lines(dat$bmi[order(dat$bmi)], predict(fit_bmi)[order(dat$bmi)],lwd=3, col = 'red')

这是一个dat - 使用我假设的结构构建的对象与您的数据对象类似:

dat <- data.frame(genhlth = sample(1:5, size=100, repl=TRUE,
                                   prob=c(.1, .2, .3, .2, .2) ),
                   bmi = rnorm(100,30,5) )
table(dat$genhlth)
#------------
 1  2  3  4  5 
 6 24 25 30 15 

enter image description here