ggplot2_`facet_xxx()`分面系统


作者:Li_Yuhui
四川大学研究生在读

本文是ggplot2_可视化_速成的第4节
第2节:coor_xxx()坐标系变换
第3节:scale_xxx()标度调整
第5节:Guides图例与增加坐标轴
第6节:themes主题系统


facet_xxx()分面系统

分面有2种函数:

  • facet_grid() 网格分面
  • facet_wrap() 封装分面,自动分成2x4, 3x2等版块
    表达式:
  • facet_grid(rows = NULL, cols = NULL, scales = "fixed", labeller = "label_value", facets)
  • facet_wrap(facets, nrow = NULL, labeller = "label_value",strip.position = "top")
    参数解释:
  • rows 表示要进行行分面的变量,如rows = vars(drv)表示将变量drv作为维度进行行分面,可以使用多个分类变量
  • cols 表示要进行列分面的变量,如cols = vars(drv)表示将变量drv作为维度进行列分面,可以使用多个分类变量
  • scales 表示分面后坐标轴适应规则,下面会介绍
  • facets 表示将哪些变量作为维度进行分面,,在网格分面中,尽量不使用,而使用rows和cols参数
    网格分面:varname.按变量varname行分面;.varname按变量varname列分面; varname1 ~ varname2 表示按varname1行分,varname2列分
    封装分面:~variable,或var(variable),可以使用多个变量
  • nrow 表示封装分面排列时行数目
  • labeller 表示指定分面标题内容,分为:"label_value"只显示分面变量值,"label_both"显示分面变量名称和变量值,
    显示字符串及特殊字符,可以线增加特殊字符变量,然后按该变量分面,使用labeller = label_parsed将特殊字符解析出来,
    labeller = label_bquote()指定显示数学公式
  • strip.position 表示指定分面标题放置位置,分为: "top"顶部,"bottom"底部
    坐标轴参数:
scale= 描述
“free” free所有坐标轴,坐标轴刻度及比例完全分开,不统一
“fixed” fixed,固定所有坐标轴,所有分面坐标轴都相同
“free_x” free_x仅y轴为共同坐标轴,x轴自适应
“free_y” free_y仅x轴为共同坐标轴,y轴自适应

高维facets分面: varname1 + varname2 + varname3 + … + varnameN ~ Varname1 + Varname2 + Varname3 + …+ VarnameN

封装分面示例

library(ggplot2)

p <- ggplot(mpg, aes(displ, hwy)) + geom_point()
p + facet_wrap(vars(class)) # 封装分面,使用class变量作为分面维度
p + facet_wrap( ~ class) # 与上面一样
p + facet_wrap(vars(class), nrow = 4) # 重新排列分面,分4行排
p + facet_wrap(vars(cyl, drv)) # 高维分面,按cyl和drv两个变量分面
p + facet_wrap(c("cyl", "drv"), labeller = "label_both") # 更改分面标题内容,显示分面变量名和变量值

p + facet_wrap(~class, scales = "free") # 更改facets方式,设定x轴自适应
p + facet_wrap(~class, scales = "free_y", nrow = 2, strip.position = "bottom") # 设定y轴自适应,2行排列,分面标题置于底部

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网格分面示例:

library(ggplot2)
p <- ggplot(mpg, aes(displ, cty)) + geom_point()

p + facet_grid(rows = vars(drv)) # 以drv变量行分面
p + facet_grid(cols = vars(cyl)) # 以cyl变量列分面
p + facet_grid(vars(drv), vars(cyl)) # 同时行分面和列分面
p + facet_grid(. ~ cyl) # 更改facets方式,以cyl列分面
p + facet_grid(drv ~ .) # 以drv变量行分面
p + facet_grid(drv ~ cyl) # 以drv变量行分,以cyl变量列分

mg <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point()
mg + facet_grid(vs + am ~ gear, scales = "free_y") # 高维分面,y轴自适应

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

labeller特殊字符分面标题

library(ggplot2)

# label_parsed解析
mtcars$cyl2 <- factor(mtcars$cyl, labels = c("alpha", "beta", "gamma"))# 新增一个特殊字符向量
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()  
  p + facet_grid(. ~ cyl2, labeller = label_parsed) # label_parsed解析
 
# label_bquote数学公式
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() 
  p + facet_grid(. ~ vs, labeller = label_bquote(cols = .(vs) ^ .(vs))) # 变量指数形式显示

在这里插入图片描述
在这里插入图片描述

Guides图例与增加坐标轴

themes主题系统

猜你喜欢

转载自blog.csdn.net/weixin_43528109/article/details/83859327