ggplot2学习之3——aes函数

说明

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)
在这里插入图片描述 在这里插入图片描述
自封装散点图函数 按区间分组后

猜你喜欢

转载自blog.csdn.net/qq_42318112/article/details/107055310