ggplot2绘图系统——图形分面

ggplot2的分面faceting,主要有三个函数:

  • facet_grid
  • facet_wrap
  • facet_null (不分面)

1. facet_grid函数

facet_grid函数及参数:

facet_grid(facets, #x~y, x+y~z
margins = F, #仅展示组合数据
scales = 'fixed', #是否通用坐标轴,free_x/free_y/free
space = 'fixed', #是否保持相同面积
shrink = T,
labeller = 'label_value', #添加标签
as.table = T,
switch = , #调整分面标签位置,both/x/y
drop = T)

基本用法

p <- ggplot(mpg,aes(displ,cty))+geom_point()
a <- p+facet_grid(.~cyl) #cyl列
b <- p+facet_grid(drv~.) #drv行
c <- p+facet_grid(drv~cyl) #drv行cyl列
grid.arrange(a,b,c,ncol=1)



分面的灵活性。

分别定义不同图形的坐标轴取值范围(scales参数)或不同分面面积(space参数)。

mt <- ggplot(mtcars,aes(mpg,wt,color=factor(cyl)))+
geom_point()
mt+facet_grid(.~cyl,scales = 'free')

ggplot(mpg,aes(drv,model))+geom_point()+
facet_grid(manufacturer~.,scales = 'free',space = 'free')+
theme(strip.text.y = element_text(angle=0)) #设置y轴标签

分面标签设置

默认标签使对应分类水平的名称,可通过设置labeller参数及对应的函数对分面标签进行修改。函数主要有:

  • label_both (最常用):讲变量名和分类水平一起展示;
  • label_bquote(很适合填充数学表达式标签):接受rows和cols参数,分别定义横向和纵向分面标签;
  • label_context:与label_both类似;
  • label_parse:与label_bquote类似。
p <- ggplot(mtcars,aes(wt,mpg))+geom_point()
p+facet_grid(vs~cyl,labeller = label_both)+ #设置分面标签
theme(strip.text = element_text(color='red')) p+facet_grid(.~vs,labeller = label_bquote(cols = alpha ^ .(vs)))
#这里只设置cols,即必须存在列分面



改变标签的方向(默认右,上),switch参数。

p+facet_grid(am~gear,switch='both')+ #右上变为左下
theme(strip.background = element_blank()) #去掉标签背景



多重分面:三个及以上变量同时分面。

mg <- ggplot(mtcars,aes(x=mpg,y=wt))+geom_point()
mg+facet_grid(vs+am~gear,labeller = label_both) mg+facet_grid(vs+am~gear,margins = T,labeller = label_both)
#margin不仅展示不同组合分面,还展示总体数据(all)分布的分面 mg+facet_grid(vs+am~gear,margins = 'am',labeller = label_both)
#am在切分不同水平和不切分时的数据分面





2. facet_wrap函数

与facet_grid的最大区别在于:能够自定义分面行列数。

函数及其参数:

facet_wrap(facets = ,
nrow = , #分面行数
ncol = , #分面列数
scales = 'fixed',
shrink = T,
labeller = 'label_value',
as.table = T,
switch = ,
drop = T,
dir = 'h') #h/v,按行/列排列分面

R语言与医学统计图形-【25】ggplot图形分面的更多相关文章

  1. R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...

  2. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  3. R语言与医学统计图形【2】散点图、盒形图

    R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...

  4. R语言与医学统计图形【8】颜色的选取

    R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...

  5. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  6. R语言与医学统计图形【5】饼图、条件图

    R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...

  7. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

  8. R语言与医学统计图形【7】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...

  9. R语言与医学统计图形-【24】ggplot位置调整函数

    ggplot2绘图系统--位置调整函数 可以参数position来调整,也有专门的函数position_*系列来设置. 位置函数汇总: 1.排列 并排排列 mean <- runif(12,1, ...

随机推荐

  1. [技术博客] 软工-Ruby on Rails 后端开发总结分享

    [技术博客] 软工-Ruby on Rails 后端开发总结分享 在这次软件编写中,我们的后端使用了Ruby on Rails (RoR)框架. Rails框架是用Ruby编写的.这意味着当我们为Ru ...

  2. 使用nexus搭建一个docker私服

    使用nexus搭建docker私服 一.需求: 二.实现步骤 1.编写`docker-compose`文件,实现`nexus`的部署 2.修改/usr/lib/systemd/system/docke ...

  3. 攻防世界 杂项 11.simple_transfer

    题目描述: 文件里有flag,找到它. 题目分析: 文件解压后是一个抓包流量分析文件,用 wireshark 打开后,用分组字节流搜索 flag,追踪 TCP 流,可以隐约看到有 file.pdf, ...

  4. 前端面试手写代码——JS函数柯里化

    目录 1 什么是函数柯里化 2 柯里化的作用和特点 2.1 参数复用 2.2 提前返回 2.3 延迟执行 3 封装通用柯里化工具函数 4 总结和补充 1 什么是函数柯里化 在计算机科学中,柯里化(Cu ...

  5. 面试题系列:工作5年,第一次这么清醒的理解final关键字?

    面试题:用过final关键字吗?它有什么作用 面试考察点 考察目的: 了解面试者对Java基础知识的理解 考察人群: 工作1-5年,工作年限越高,对于基础知识理解的深度就越高. 背景知识 final关 ...

  6. python基础数据类型语法

    #标识符:我们自己在写代码的时候,取的名字.#项目名 project name#包名 package name#模块名 .py ptthon文件名#规范:由字母数字下划线组成,但不能以数字#简明知意: ...

  7. 2016西邮Linux兴趣小组大事记

    2016年还有半个小时就结束了,前面把自己9月做的规划拿出来完善了下,觉得真的是不容易的一年,所有的事情只有自己经历过才会有不一样的感受,世上无难事,只怕有心人. 这是我九月份制定的计划: 下面是20 ...

  8. 什么是SimpleNVR流媒体服务器软件?

    SimpleNVR是一款新兴流媒体服务器应用软件,占用内存少,无插件.跨平台,应用非常广泛,操作简单易上手,同时还支持一键观看,十分便捷.另外,跟其他一般流媒体服务器不同,SimpleNVR支持开发者 ...

  9. springcloud优雅停止上下线与熔断

    SpringCloud 服务优雅上下线 Spring Boot 框架使用"约定大于配置"的特性,优雅流畅的开发过程,应用部署启动方式也很优雅.但是我们通常使用的停止应用的方式是 k ...

  10. Django开发 X-Frame-Options to deny 报错处理

    本博客已停更,请转自新博客查看 https://www.whbwiki.com/318.html 错误提示 Refused to display 'http://127.0.0.1:8000/inde ...