facet_grid()形成由行和列面化变量定义的面板矩阵。当有两个离散变量,并且这些变量的所有组合存在于数据中时,它是最有用的。如果只有一个具有多个级别的变量,请尝试facet_wrap()。
facet_wrap()将一维面板序列包装成2d。这通常比facet_grid()更好地利用了屏幕空间,而且显示基本上是矩形的。
分面图是根据数据类别按照行或者列,或者矩阵分面的方式将散点图,柱形图等基础图标展示四到五维的数据结构。
01用法
facet_grid():
facet_grid(rows = NULL,cols = NULL,scales = "fixed",space = "fixed",shrink = TRUE,labeller = "label_value",as.table = TRUE,switch = NULL,drop = TRUE,margins = FALSE,facets = NULL)
facet_wrap():
facet_wrap(facets,nrow = NULL,ncol = NULL,scales = "fixed",shrink = TRUE,labeller = "label_value",as.table = TRUE,switch = NULL,drop = TRUE,dir = "h",strip.position = "top")
rows:一组变量或表达式,由vars()引用并定义面,比如rows=vars(x)是指将变量x作为维度进行分面,并且可以使用多个分类变量。
cols:表示列维度上的组。可以对变量进行命名(将名称传递给标签器)。比如cols=vars(x)表示将变量x作为维度进行列分面。
scales:表示分面后坐标轴的尺度按照什么规则进行适应。(默认为"fixed"),按行适应是(“free_x”)、按照列(“free_y”)适应,或者跨行和列(“free”)?
space:如果“fixed”,默认,所有面板有相同的大小。如果"free_y"它们的高度将与y刻度的长度成比例;如果“free_x”,它们的宽度将与x刻度的长度成比例;或者“free”时,高度和宽度都会发生变化。除非适当的刻度也发生变化,否则此设置没有效果。
Shrink:如果为真,将缩小规模以适应统计输出,而不是原始数据。如果为假,将范围内的原始数据进行统计汇总。
labeler:默认情况下使用label_value()。
as.table:如果为真,则默认情况下,facet的布局类似于在右下方具有最高值的表。如果为假,那么这些面就像一个在右上角有最高值的情节一样被布置。
switch:默认情况下,标签显示在绘图的顶部和右侧。如果“x”,顶部的标签将显示在底部。如果是“y”,则右侧的标签将显示在左侧。也可以设置为“both”。
facets:此参数不建议使用,请使用行rows和cols代替.
dir: 方向:“h”代表默认水平方向,“v”代表默认垂直方向。
strip.position:默认情况下,标签显示在图形的顶部。使用地带。位置通过设置条带,可以将标签放置在四个边的任意一边。position = c("top", "bottom", "left", "right")。
02按列分面
p = ggplot(mpg,aes(cty,hwy,fill=class,size=cyl))+geom_point(shape=21,colour="black",stroke=0.25,alpha=0.8)
p+facet_grid(.~drv)
03按行分
p+facet_grid(cyl~.)
04按两个变量的行列矩阵排列
p+facet_grid(vars(drv), vars(cyl))
05 facet_grid()调节X轴的取值范围
p+facet_grid(vars(drv), vars(cyl),scales="free_x")
06facet_grid()
调节y轴的取值范围
p+facet_grid(vars(drv), vars(cyl),scales="free_y")
07facet_grid()调节X和Y轴的取值范围
p+facet_grid(vars(drv), vars(cyl),scales="free")
08facet_wrap()的矩阵排列
p+facet_wrap(~cyl)