ggplot2:分面的介绍

Posted REAY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ggplot2:分面的介绍相关的知识,希望对你有一定的参考价值。

1.分面

分面是指在一个页面上自动摆放多幅图形的技巧,也就是说可以让不同分类的图同时展示在一张图上,这样方便于数据之间的的比较。ggplot2提供了网格型(facet_grid)和封装型(facet_wrap)两种分面类型,下面就针对不同的两种分面进行介绍。

1.1 网格分面(facet_grid)

如果我们对图像什么也不改变,或者加上facet_null()则不会出现分面效果(如下所示)。

library("ggplot2")
mpg2<-subset(mpg,cyl!=5&drv %in% c("4","f"))
qplot(cty,hwy,data=mpg2)+facet_null()

一行多列:".~a"这时候纵坐标轴相同,有助于y的比较。

qplot(cty,hwy,data=mpg2)+facet_grid(.~cyl)

一列多行:"b~."这时候横坐标相同,有助于x的比较,尤其是数据的分布。

 

qplot(cty,data=mpg2,geom="histogram",binwidth=2)+facet_grid(cyl~.)

 

多行多列:"a~b"

qplot(cty,hwy,data=mpg2)+facet_grid(drv~cyl)

添加边际图:"margins=TRUE"

下面代码添加了一个边际(类似于列联表的边际和),并对每个驱动轮类型添加了彩色平滑线。

qplot(displ,hwy,data=mpg2)+geom_smooth(aes(colour=drv),method="lm",se=FALSE)+facet_grid(drv~cyl,margins=TRUE)

1.2 封装分面(facet_wrap)

下面代码展示了每十年电影平均评分的分布情况,利用封装分面的规则按照年代进行分类绘图。

library("ggplot2")
library("plyr")
movies$decade<-round_any(movies$year,10,floor)
qplot(rating,..density..,data = subset(movies,decade>1890),geom="histogram",binwidth=0.5)+facet_wrap(~decade,ncol=6)

分面变量的设置格式为~a+b+c,facet_wrap尽可能摆成方形,也可以通过设置ncol,nrow来改变。

1.3 标度控制

可以通过调整参数scales来控制面板的位置标度是固定的还是变化的。

scales="fixed\':x和y的标度在所有面板中都相同。

scales="free":x和y的标度在每个面板都可以变化。

scales="free_x":x可变,y固定。

scales=\'free_y":y可变,x固定。

 Example:

library("ggplot2")
p<-qplot(cty,hwy,data=mpg)
p+facet_wrap(~cyl)
p+facet_wrap(~cyl,scales = "free")

使用网格分面(facet_grid)时还有一个额外的限制:同列的面板必须有相同的x标度,同行的面板必须有相同的y标度。这是因为网格分面中,每列都公用一个x轴,每行共用一个y轴。

 

以上是关于ggplot2:分面的介绍的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化分面图(faceting)设置每个分面的标题在右侧(right side)并在右侧分面图的外侧添加整图的标题信息(facet title)

R语言ggplot2可视化分面图(faceting)设置每个分面的标题在上方(top side)并在上方分面图的外侧添加整图的标题信息(facet title)

VIM 代码片段插件 ultisnips 使用教程

ggplot2 跨越组中的嵌套构面

R语言ggplot2可视化分面图(facet_grid):ggplot2可视化为分面图的每个组添加平均值线条

ggplot2 跨越组中的嵌套构面