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=att1
和 y=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 创建
假设我有一个数据框 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=att1
和 y=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 创建