楼主: 艾弗新
49273 16

[问答] 请问如何使用ggplot2画出平滑曲线(不是趋势线)? [推广有奖]

11
zhou1_20 发表于 2017-2-28 18:36:44
  1. f=read.table('ggdata.txt',header=TRUE)[,-1]
  2. library(tidyverse)
  3. library(ggplot2)
  4. library(splines)
  5. library(ggthemes)
  6. #ggplot(f,aes(x=TI,y=RAIN,colour=MODEL,group=MODEL))+geom_line()
  7. #ggbs <- lm(RAIN ~ bs(TI, df = 3), data = f)
  8. data1=spread(f,MODEL,RAIN)
  9. ggbs1 <- lm(obs ~ bs(TI, df = 10), data = data1)
  10. ggbs2 <- lm( rr ~ bs(TI, df = 10), data = data1)
  11. ggbs3 <- lm( xaj ~ bs(TI, df = 10), data = data1)
  12. TI1=seq(1,length(data1$TI),length.out=100)
  13. RAIN1=c(predict(ggbs1,data.frame(TI=TI1)),predict(ggbs2,data.frame(TI=TI1)),
  14.         predict(ggbs3,data.frame(TI=TI1)))
  15. MODEL1=rep(names(data1)[-1],rep(100,3))
  16. data2=data.frame(TI=rep(TI1,3),RAIN=RAIN1,MODEL=MODEL1)
  17. ggplot(data2,aes(x=TI,y=RAIN,colour=MODEL,group=MODEL))+geom_line()+
  18. theme_wsj()
复制代码

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

12
zhou1_20 发表于 2017-2-28 19:04:05
  1. ggplot(f,aes(x=TI,y=RAIN,colour=MODEL,group=MODEL))+
  2.         geom_point()+
  3.         geom_smooth(se=FALSE,formula = y ~ splines::ns(x,14), method ='lm')
复制代码


13
muxi1995 发表于 2018-8-3 11:25:18
可以用spline

14
哎呦不错哦~ 学生认证  发表于 2018-8-9 17:25:52 来自手机
艾弗新 发表于 2015-4-2 15:47
请教大神~~~
请问如何适用ggplot2画出平滑曲线(不是趋势线)?

geom_smooth()不就好了吗

15
s609078902 发表于 2021-11-12 14:09:27
可以使用 ggalt::geom_xspline() 来画,参数 spline_shape 可以调整平滑程度

16
绝世涛神 发表于 2021-11-16 10:22:27
geom_smooth()
试试

17
yeahisme 发表于 2022-2-9 04:49:47
嗯呢,我首先想到的也是+geom_smooth()

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-12 05:05