前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言绘制曲线图

R语言绘制曲线图

原创
作者头像
爱学习的小明明
修改2020-09-25 17:39:54
4.4K0
修改2020-09-25 17:39:54
举报
文章被收录于专栏:R语言学习R语言学习

由于ggplot2中的geom_line()函数只能绘制折线图,需要用到ggalt提供的geom_xspline()函数绘制光滑的曲线图

geom_line 将所有点连接起来,是折线图但不平滑

geom_smooth/stat_smooth一条平滑的线,但他是拟合曲线,不会遍历所有数据点

实现遍历所有点的光滑曲线需要用到插值原理

一个更好的选择是使用插值splines.这也是一个使用多项式的插值,但不是只使用一个(如你所尝试的),它使用很多.它们被强制执行以使曲线连续的方式遍历所有数据点.,这不能直接用ggplot完成,但可以使用ggalt :: geom_xspline完成

1数据构建

用ggplot+geom_xspline实现

> mydata<-read.csv(p,header=T)

> ggplot(mydata, aes(x, y) )+

+ geom_xspline(spline_shape=-0.5, size=0.25)+

+ geom_point(shape=21,size=4,color="black",fill="#F78179") +

+ xlab("X-Axis")+

+ ylab("Y-Axis")+

+ ylim(0, 50)+

+ theme_gray()+

+ theme(

+ text=element_text(size=15,face="plain",color="black"),

+ axis.title=element_text(size=10,face="plain",color="black"),

+ axis.text = element_text(size=10,face="plain",color="black")

+ )

只用geom_line的结果

ggplot(mydata, aes(x, y) )+

geom_point(data=mydata,aes(x,y),shape=21,size=4,color="black",fill="red")+

geom_line(size=0.5,color="black")+

xlab("X-Axis")+

ylab("Y-Axis")+

ylim(0, 50)+

theme_gray()+

theme(

text=element_text(size=15,face="plain",color="black"),

axis.title=element_text(size=10,face="plain",color="black"),

axis.text = element_text(size=10,face="plain",color="black")

)

通过R自带的spline函数获得一系列插值点后用geom_line()绘制的曲线明显光滑了

spline_int <- as.data.frame(spline(mydata$x, mydata$y))

ggplot(spline_int, aes(x, y) )+

geom_line(size=0.5,color="black")+

geom_point(data=mydata,aes(x,y),shape=21,size=4,color="black",fill="red")+ #这里用到的数据框鼠mydata,与spline_int不一样

xlab("X-Axis")+

ylab("Y-Axis")+

ylim(0, 50)+

theme_gray()+

theme(

text=element_text(size=15,face="plain",color="black"),

axis.title=element_text(size=10,face="plain",color="black"),

axis.text = element_text(size=10,face="plain",color="black")

)

绘制填充面积的曲线图

ggplot(mydata, aes(x, y) )+

geom_xspline(spline_shape=-0.5, size=0.25)+

geom_point(shape=21,size=4,color="black",fill="#F78179") +

geom_area(fill="#F78179",alpha=0.9)+

xlab("X-Axis")+

ylab("Y-Axis")+

ylim(0, 50)+

theme_gray()+

theme(

text=element_text(size=15,face="plain",color="black"),

axis.title=element_text(size=10,face="plain",color="black"),

axis.text = element_text(size=10,face="plain",color="black")

)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 由于ggplot2中的geom_line()函数只能绘制折线图,需要用到ggalt提供的geom_xspline()函数绘制光滑的曲线图
  • 1数据构建
  • 用ggplot+geom_xspline实现
  • 只用geom_line的结果
  • 通过R自带的spline函数获得一系列插值点后用geom_line()绘制的曲线明显光滑了
  • 绘制填充面积的曲线图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档