我有这个数据框:
set.seed(50)
data <- data.frame(age=c(rep("juv", 10), rep("ad", 10)),
sex=c(rep("m", 10), rep("f", 10)),
size=c(rep("large", 10), rep("small", 10)),
length=rnorm(20),
width=rnorm(20),
height=rnorm(20))
使用这个数据帧,我需要制作9个散点图,它们根据每个因子变量绘制每个连续变量。所以我需要制作这些散点图:
library(ggplot2)
ggplot(data, aes(length, width, group=age, colour=age)) + geom_point()
ggplot(data, aes(length, height, group=age, colour=age)) + geom_point()
ggplot(data, aes(width, height, group=age, colour=age)) + geom_point()
ggplot(data, aes(length, width, group=sex, colour=sex)) + geom_point()
ggplot(data, aes(length, height, group=sex, colour=sex)) + geom_point()
ggplot(data, aes(width, height, group=sex, colour=sex)) + geom_point()
ggplot(data, aes(length, width, group=size, colour=size)) + geom_point()
ggplot(data, aes(length, height, group=size, colour=size)) + geom_point()
ggplot(data, aes(width, height, group=size, colour=size)) + geom_point()
但是,我希望能够使用函数制作这9个散点图。像这样:
makeScatterplots <- function(x.variable, y.variable, my.factor){
ggplot(dataframe, aes(x.variable, y.variable, group=my.factor, colour=my.factor)) + geom_point()
}
如何创建一个函数,它将获取将计算这9个散点图的x变量,y变量和分组因子?
答案 0 :(得分:4)
在aes_string()
内使用ggplot()
并提供x.variable
和y.variable
作为姓名(字符),并在print()
电话周围使用ggplot()
。
makeScatterplots <- function(dataframe,x.variable, y.variable, my.factor){
print(ggplot(dataframe, aes_string(x=x.variable,y= y.variable,
group=my.factor, colour=my.factor)) + geom_point())
}
makeScatterplots(data,"length","width","age")
将此版本与之前的OP question
合并在一起此函数将生成x,y和因子变量的所有可能组合。
makeScatterplots <- function(dataframe,x.variable, y.variable, my.factor){
gg<-expand.grid(x.variable,y.variable,my.factor)
gg<-data.frame(lapply(gg, as.character), stringsAsFactors=FALSE)
apply(gg,1,function(x) ggplot(data,aes_string(x=x[1],y=x[2],color=x[3]))+geom_point())
}