ITPub博客

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

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

作者:浪花小雨滴 时间:2020-06-16 15:11:22 0 删除 编辑

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

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

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") +
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))  

联系方式:

微信:ljty1991

博客主页:raindu's home

个人公众号:数据小魔方(datamofang)

团队公众号:EasyCharts

qq交流群:[魔方学院]553270834


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3161915/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Pandas vs SQL
请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39859