我浏览了许多答案,但在ggplot2中为绘图编程功能时仍然遇到问题。 这是一个示例数据集:
d<-data.frame(replicate(2,sample(0:9,1000,rep=TRUE)))
colnames(d)<-c("fertilizer","yield")
现在,我编写以下函数-我只想给函数x和y:
test <- function(explanatory,response)
{
plot<- ggplot(d, aes(x =explanatory, y=response)) +
geom_point()+
ggtitle("Correlation between Fertilizer and Yield") +
theme(plot.title = element_text(size = 10, face = "bold"))+
geom_smooth(method=lm, se=FALSE) +
annotate("text", x=800, y=20, size=5,label= cor6)
plot
}
当我以此调用此函数时,
test("fertilizer","yield")
我得到的图形没有这样的散点:
有人可以帮助我吗?我真的很想学习用R编写函数。
答案 0 :(得分:3)
使用aes_string
代替aes
。它应该工作。为我工作:)
注意:删除函数定义中参数周围的引号。另外,您的cor6应该用引号引起来。见下文
test <- function(explanatory,response)
{
plot<- ggplot(d, aes_string(x =explanatory, y=response)) +
geom_point()+
ggtitle("Correlation between Fertilizer and Yield") +
theme(plot.title = element_text(size = 10, face = "bold"))+
geom_smooth(method=lm, se=FALSE) +
annotate("text", x=800, y=20, size=5,label= "cor6")
plot
}
答案 1 :(得分:2)
如果您使用enquo
和!!
,则不需要引号。
test <- function(explanatory,response)
{
explanatory <- enquo(explanatory)
response <- enquo(response)
plot <-
ggplot(d, aes(x = !!explanatory, y = !!response)) +
geom_point()+
ggtitle("Correlation between Fertilizer and Yield") +
theme(plot.title = element_text(size = 10, face = "bold"))+
geom_smooth(method=lm, se=FALSE) +
annotate("text", x=800, y=20, size=5,label= 'cor6')
plot
}
test(fertilizer, yield)
答案 2 :(得分:1)
更改标签= cor6 tp标签=“ cor6”
也位于:
annotate("text", x=800, y=20, size=5,label= cor6)
x,y更改绘图范围,值从1变为9,将其删除或根据变量范围进行设置