【R语言】高维数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()姐妹花
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
按列分面
m<-ggplot(mpg,aes(cty,hwy,fill=class,size=cyl))+geom_point(shape=21,colour="black",stroke=0.25,alpha=0.8)
m+facet_grid(.~drv)
facet_grid()按照列分面
03
按行分面
m+facet_grid(cyl~.)
facet_grid()按行分面
04
按两个变量的行列矩阵排列
m+facet_grid(vars(drv), vars(cyl))
05
facet_grid()调节X轴的取值范围
m+facet_grid(vars(drv), vars(cyl),scales="free_x")
facet_grid()按照x轴调节取值范围
06
facet_grid()调节y轴的取值范围
facet_grid()按照y轴调节取值范围
07
facet_grid()调节X和Y轴的取值范围
m+facet_grid(vars(drv), vars(cyl),scales="free ")
facet_grid()按照x轴和y轴调节取值范围
08
facet_wrap()的矩阵排列
m+facet_wrap(~cyl)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c/c++补完计划(二): c字符串复制
- vue 随记(3):“新时代”的姿势
- 归并排序 O(nLogn)
- 读书笔记--Android系统启动
- Swift 数组(Arrays)
- Swift 多行字符串字面量
- 服务器配置ssh密钥登陆
- Swift 区间运算符
- Spring Security 实战干货:理解AuthenticationManager
- 深度学习|Tensorflow2.0基础
- 【Rust日报】2020-07-20 boids算法, tide, popol, Calcite
- Cell Ontology:解析细胞类型新维度
- 软件设计思想:池化技术
- MySQL变量声明、赋值和使用
- Google Analytics和Adobe Analytics中的数据层dataLayer