前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可视化——折线图、平滑曲线及路径图

R语言可视化——折线图、平滑曲线及路径图

作者头像
数据小磨坊
发布2018-04-11 11:48:41
3.9K0
发布2018-04-11 11:48:41
举报
文章被收录于专栏:数据小魔方数据小魔方

今天跟大家讲关于路径图、平滑曲线与折线图及其美化。

这里涉及到三个设计线条的特殊图层函数:

geom_smooth()、geom_path()、geom_line()

下面分别讲解:

关于geom_smooth():平滑曲线

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_smooth()

平滑曲线专门用于对于散点图趋势的拟合,geom_smooth函数内部有默认的拟合规则(根据统计统计算法计算出的拟合规则,而非实际的点)。

其中的括号内有默认的method参数,代表着拟合曲线所用到的统计算法,se代表着误差范围。(就是围绕着拟合直线的颜色带)。

method中的类型常见的有lm\glm\gam\loess\rlm等,当数据集记录小于1000时,method的默认参数即为loess,大于1000时则为gam。

本例所用到mpg数据集只有234个记录,使用geom_smooth参数应该默认使用的方法参数就是loess,这里我们可以检验一下:

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_smooth(method="loess")

误差范围的颜色带是可以通过se参数进行控制的,默认se=TRUE,这里设置为se=FALSE。

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_smooth(method="loess",se=FALSE)

接下来我们依次尝试其他几个拟合曲线:

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_smooth(method="lm",se=FALSE)

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_smooth(method="glm",se=FALSE)

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_smooth(method="gam",se=FALSE)

看上去没啥太大区别,可能是数据集太小的原因吧。

路径图:geom_path()

以上函数参数可以画出路径图,其实就是根据每一个数据点的出现先后顺序,依次链接所有点所形成的路径:

ggplot(mpg,aes(cty,hwy))+geom_path()

这种图乍看起来没啥意义,但是在某些特殊场景下,却能够表达出非常重要的信息,比如候鸟迁徙、病毒传播、甚至飞机航线等领域。

ggplot(mpg,aes(cty,hwy))+geom_point()+geom_path()

可以同时添加点函数和路径函数,制作出带有点标记的路径图。

ggplot(mpg,aes(cty,hwy))+geom_point(colour="steelblue")+geom_path(colour="red")

每一个图层函数内的图层对象都是可以单独定义颜色的。

折线图:geom_line()

以上是直线图的图层函数;它与路径图的唯一区别就是,在连接各点之前,会按照x轴数据对总体升序排列,所以最终的连线是非常清晰的顺序折线,不会存在交叉。(而路径图则按照实际数据点在数据集中出现的先后顺序依次联结)。

ggplot(mpg,aes(cty,hwy))+geom_line(colour="steelblue")

ggplot(mpg,aes(cty,hwy))+geom_point(colour="black")+geom_line(colour="steelblue")

为了更加明显的看出两者区别,我们换一个变量:

ggplot(CO2,aes(uptake,conc))+geom_line(colour="steelblue")+geom_point(colour="black")

ggplot(iris,aes(Sepal.Length,Sepal.Width))+geom_line(colour="steelblue")+geom_point(colour="white",shape=21,size=4,fill="Tomato")

加入分类变量后的折线图:

ggplot(iris,aes(Sepal.Length,Sepal.Width,colour=Species))+geom_line()+geom_point(colour="white",shape=21,size=4,fill="Tomato")

默认的折线线条位置参数应该position=identity,我们也可以尝试使用其他几个参数

ggplot(iris,aes(Sepal.Length,Sepal.Width,colour=Species))+geom_line(position="identity")+geom_point(colour="white",shape=21,size=4,fill="Tomato")

ggplot(iris,aes(Sepal.Length,Sepal.Width,colour=Species))+geom_line(position="stack")+geom_point(colour="white",shape=21,size=4,fill="Tomato",position="stack")

ggplot(iris,aes(Sepal.Length,Sepal.Width,colour=Species))+geom_line()+facet_grid(.~Species)+geom_point (colour="white",shape=21,size=4,fill="Tomato") #分面组图:

ggplot(iris,aes(Sepal.Length,Sepal.Width,colour=Species))+geom_line()+facet_grid(.~Species)+geom_point (colour="white",shape=21,size=4,fill="Tomato") +theme_wsj("rgby","")+scale_colour_wsj()+ggtitle("line plot")+guides(colour=guide_legend(title=NULL))

ggplot(iris,aes(Sepal.Length,Sepal.Width,colour=Species))+geom_line()+facet_grid(.~Species)+geom_point (colour="white",shape=21,size=4,fill="Tomato") +theme_economist()+scale_colour_economist()+ggtitle("line plot")+guides(colour=guide_legend(title=NULL))

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档