繁体   English   中英

如何使用正确的aes在ggplot2中为绘图编写函数?

[英]How do I write a function for a plot in ggplot2 using correctly aes?

我浏览了许多答案,但在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编写函数。

使用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
 }

如果您使用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)

更改标签= cor6 tp标签=“ cor6”

同样在:

annotate("text", x=800, y=20, size=5,label= cor6) 

x,y更改绘图范围,值从1到9,将其删除或根据变量范围进行设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM