本文更新地址:http://blog.csdn.net/tanzuozhev

本文在 http://www.cookbook-r.com/Graphs/Facets_(ggplot2)/的基础上加入了自己的理解

ggplot2的数据分面就是根据数据中的不同分组,绘制多个图形.

数据预览

library(reshape2)
head(tips)
##   total_bill  tip    sex smoker day   time size
## 1      16.99 1.01 Female     No Sun Dinner    2
## 2      10.34 1.66   Male     No Sun Dinner    3
## 3      21.01 3.50   Male     No Sun Dinner    3
## 4      23.68 3.31   Male     No Sun Dinner    2
## 5      24.59 3.61 Female     No Sun Dinner    4
## 6      25.29 4.71   Male     No Sun Dinner    4

绘制散点图

library(ggplot2)sp <- ggplot(tips, aes(x=total_bill, y=tip/total_bill)) + geom_point(shape=1)
sp

facet_grid

facet_grid() 可以根据数据的不同分组, 将图形按照 水平或者垂直方向 进行分割.共享x轴或者轴.

# 垂直方向进行分割
sp + facet_grid(sex ~ .)

# 水平方向分割
sp + facet_grid(. ~ sex)

# 对 sex 进行垂直分割, 对 day 进行水平分割
sp + facet_grid(sex ~ day)

facet_wrap

facet_wrap()可以根据行列的数值进行分割

# 水平分割, 分为两列
sp + facet_wrap( ~ day, ncol=2)

修改分页的标签外观

sp + facet_grid(sex ~ day) +theme(strip.text.x = element_text(size=8, angle=75),strip.text.y = element_text(size=12, face="bold"),strip.background = element_rect(colour="red", fill="#CCCCFF"))

修改分页标签文字

labels <- c(Female = "Women", Male = "Men")
sp + facet_grid(. ~ sex, labeller=labeller(sex = labels))

或者直接进行赋值

tips2 <- tips
levels(tips2$sex)[levels(tips2$sex)=="Female"] <- "Women"
levels(tips2$sex)[levels(tips2$sex)=="Male"]   <- "Men"
head(tips2, 3)
##   total_bill  tip   sex smoker day   time size
## 1      16.99 1.01 Women     No Sun Dinner    2
## 2      10.34 1.66   Men     No Sun Dinner    3
## 3      21.01 3.50   Men     No Sun Dinner    3
# Both of these will give the same output:
sp2 <- ggplot(tips2, aes(x=total_bill, y=tip/total_bill)) + geom_point(shape=1)
sp2 + facet_grid(. ~ sex)

labeller

labeller() 通过输入一个方法, 对字符串进行该方法处理的,重新返回字符串.

# Reverse each strings in a character vector
reverse <- function(strings) {strings <- strsplit(strings, "")vapply(strings, function(x) {paste(rev(x), collapse = "")}, FUN.VALUE = character(1))
}sp + facet_grid(. ~ sex, labeller=labeller(sex = reverse))

设置范围

一般情况下, 坐标轴的范围是固定的,也就是每幅图都有相同的尺寸和范围, 当然也可以设置freefree_x, 或者 free_y自由改变坐标轴的范围.

hp <- ggplot(tips, aes(x=total_bill)) + geom_histogram(binwidth=2,colour="white")# Histogram of total_bill, divided by sex and smoker
hp + facet_grid(sex ~ smoker)

# scales="free_y", y轴自由设置
hp + facet_grid(sex ~ smoker, scales="free_y")

# With panels that have the same scaling, but different range (and therefore different physical sizes)
hp + facet_grid(sex ~ smoker, scales="free", space="free")

ggplot2-分面(facet) 一页多图相关推荐

  1. ggplot2 分面相关设置(facet)

    总结学习,ggplot 1.0,2.0 后,已经大致画出符合需求的图,并能对坐标轴,图例进行修改.分面画图,和一页多图可以更好的将数据分类展示出来. 分面 分面分成两种网格分面(facet_grid( ...

  2. R语言ggplot2可视化分组变量下的数据分布(线条、色彩配置)、WVPlots包的ShadowHist函数比较分组下的数据直方图、ggplot2分面图facet_wrap可视化分组变量下的数据分布

    R语言ggplot2可视化分组变量下的数据分布(线条.色彩配置).WVPlots包的ShadowHist函数比较分组下的数据直方图.ggplot2分面图facet_wrap可视化分组变量下的数据分布 ...

  3. R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致

    R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致 目录 R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致

  4. ggplot2如何实现1页多图

    看到论坛上好多人在问 ggplot2 怎么画1页多图,par参数在这里不起作用.一种方法是通过分面facet_grid,还有一种方法是通过视图窗口viewport和矩形网格grid,具体代码如下(以第 ...

  5. r语言ggplot2一夜多图_关于GGPLOT2出图里的一页多图模式

    由于出图需求,需要使用一页多图的方式出图.对照着<GGPLOT2:数据分析与图形艺术>书上的程序方法测试了下,不管的计算方式还是GRID.LAYOUT方式,两种排版方式都出现了同样的错误. ...

  6. ggplot2 一页多图排版的简便方法

    前文链接 title: 'ggplot2 一页多图排版的简便方法' output: html_document knitr::opts_chunk$set(echo = F, message = F) ...

  7. ggplot2-一页多图(不同来源, 灵活绘制)

    本文更新地址:http://blog.csdn.net/tanzuozhev 本文在 http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_p ...

  8. ggplot2版聚类物种丰度堆叠图

    文章目录 写在前面 加载依赖关系 导入数据 ggtree绘制聚类树 物种组成数据 整理成facet需要的格式 保证颜色填充独立性 分面组合树和柱图 修改配色 ggtree调整布局 添加样本其他信息 树 ...

  9. ggplot2分面柱状图柱子比例一致_R语言柱状图

    气象水文科研猫公众号交流邮箱:leolovehydrometeor@hotmail.com欢迎投稿&批评指正如有侵权且本公众号未能正确引用原文,请联系删除,谢谢理解.谢谢配合. #openai ...

最新文章

  1. 开发日记-20190823 linux有名管道fifo,进程间通信
  2. manual start user profile import
  3. Interpreter(解释器)--类行为型模式
  4. matlab圆形器件,计算围绕点+ Matlab的圆形箱
  5. vue 多个回调_Vue 进阶面试必问,异步更新机制和 nextTick 原理
  6. 女子在朋友圈辱骂前男友被起诉,最后法院判决结果舒适...
  7. nodejs进入mysql数据库_nodejs简单访问及操作mysql数据库的方法示例
  8. CSS-Position用法的理解
  9. 大数据分析应具备哪些属性
  10. lr中错误解决方法(收集)
  11. 如何开发 Web 应用程序
  12. vivado simulation仿真(38译码器实现)
  13. 【产业互联网周报】AWS 全球换帅,中国区发布战略;杨杰回应回A,中移动计划千亿投5G;全球缺芯潮持续...
  14. linux运维经验总结
  15. 6572 Phone call分析
  16. 【ZT】【详细教程】WPS如何关闭自动更新和WPS热点?(ksomisc.exe)
  17. SketchUp模型组件【iMod · 精选242 —— 现代客厅SU模型】
  18. MYSQL数据库 增删改查基础语句
  19. 中国移动说:给你免费发短信的工具
  20. 速学堂(java)第八章编程题答案自写

热门文章

  1. php 如何启动ica文件,什么是ICA文件?Win10专业版如何打开ICA文件?
  2. 个人python学习(10)
  3. Astah 建模软件安装
  4. 武松大战蒋门神(35)
  5. java计算机毕业设计洁能租车源码+mysql数据库+系统+lw文档+部署
  6. 地理信息系统复习摘要
  7. 马克思主义理论-资本主义的发展及趋势
  8. 建筑施工技术【21】
  9. matlab中conv什么意思,matlab卷积函数conv matlab中conv()是什么意思?
  10. 【快乐离散数学】Discrete Structure 课程计划书