ggplot2 不同属性的散点图函数

Scatterplot function for different attributes with ggplot2

假设我有一个数据框 df。 (下面我使用 mtcars 的示例。)我可以编写一个函数来接收 df 的任意两个属性并生成 ggplot2 散点图吗?

到目前为止我有以下代码:

scatterplotter <- function(att1, att2){
  plot <- ggplot(data=mtcars, aes(x=att1, y=att2)) +
    geom_point(aes(color=as.factor(vs))) +
    xlab(paste(att1)) + ylab(paste(att2)) +
    ggtitle(paste("plot of",att1,"and ",att2))
return(plot)
}

现在我遇到的问题是,虽然 x=att1y=att2 是它们应该的样子,但这不适用于粘贴,我收到一条错误消息 Error in parse(text = disp) : object 'disp' not found.有人可以帮忙吗?

我不介意如何将名称输入函数,例如 scatterplotter("disp","gear")scatterplotter(disp,gear)

(请不要使用 base-R + ggplot2 包)

使用aes_string()

library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.6.3
scatterplotter <- function(att1, att2){
  plot <- ggplot(data=mtcars, aes_string(x=att1, y=att2)) +
    geom_point(aes(color=as.factor(vs))) +
    xlab(paste(att1)) + ylab(paste(att2)) +
    ggtitle(paste("plot of",att1,"and ",att2))
  return(plot)
}

scatterplotter("mpg", "disp")

reprex package (v0.3.0)

于 2020-05-15 创建