说明
R语言的版本为4.0.2,IDE为Rstudio,版本为1.3.959。学习的主要内容是R官方文档当中给出的算法,对其中的英文注释做了自己理解基础上的翻译。
函数名及参数
# 映射函数,函数的最常见参数有两个
# x:x向量,将数据映射到本图层的x轴
# y:y向量,将数据映射到本图层的y轴
# …:其他向量,将数据映射到本图层的其他几何要素上
library(ggplot2)
aes(x, y, ...)
1、基本用法
# 映射的两种基本写法
aes(x = mpg, y = wt)
aes(mpg, wt)
# 可以映射多变量函数到几何要素上
aes(x = mpg ^ 2, y = wt / cyl)
# 可以映射常量到几何要素上
aes(x = 1, colour = "smooth")
# 函数会自动补全参数名,以下四种写法等价
aes(col = x)
aes(fg = x)
aes(color = x)
aes(colour = x)
# 可以在ggplot()中设置全局默认映射,也可以单独为每一个图层设置映射
ggplot(mpg, aes(displ, hwy)) + geom_point()
ggplot(mpg) + geom_point(aes(displ, hwy))
2、函数的进一步封装
# 封装到自定义函数之后,该函数会自动调用它所有的参数
# 但是需要对自动调用的参数进行处理,使用...的形式代替最为简洁
scatter_by <- function(data, ...) {
ggplot(data) + geom_point(aes(...))}
scatter_by(mtcars, disp, drat)
# 如果在封装时指定了具体的参数名,需要在函数内部重新引用参数名
# enquote():返参函数,重新引用参数保护原参数
# !!;强制使用符,强制用数据框中的数据变量替代环境变量
scatter_by <- function(data, x, y) {
x <- enquo(x)
y <- enquo(y)
ggplot(data) + geom_point(aes(!!x, !!y))}
scatter_by(mtcars, disp, drat)
# 在封装当中依然可使用自定义的函数
# cut_number():数据分组函数,将数据按区间划分成指定组数
cut3 <- function(x) cut_number(x, 3)
scatter_by(mtcars, cut3(disp), drat)
![]() | ![]() |
---|---|
自封装散点图函数 | 按区间分组后 |