使用ggplot包

时间:2016-05-16 08:34:15

标签: r function ggplot2

我在尝试绘制子集数据的函数时遇到错误。我的功能如下:

graph_mail<-function(data,var){
     myplot <- ggplot(data = data, aes(x=subset(TIME,CAMPAIGN_NAME=="var"))) +
       geom_line(aes(y=subset(total_races,CAMPAIGN_NAME=="var",colour="total_races"))) +
       geom_line(aes(y =subset(no_email_month,CAMPAIGN_NAME=="var",colour="total_emails"))) +
       geom_line(aes(y=subset(total_cust,CAMPAIGN_NAME=="var",colour="total_customers"))) +
       scale_colour_manual("", values=c("total_races"="green","total_customers"="blue","total_emails"="red")) +
       ylab(label="Numbers") +
       xlab("Month")

    return (myplot)
}

我收到错误:错误:美学必须是长度1或与数据相同(106):y,x

非常感谢有人可以提供帮助。我的虚拟数据图片如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

你的括号不对。

这个

geom_line(aes(y =subset(no_email_month,CAMPAIGN_NAME=="var",colour="total_emails")))

应该是

geom_line(aes(y =subset(no_email_month,CAMPAIGN_NAME=="var"),colour="total_emails"))

但您应该使用data = subset(data,CAMPAIGN_NAME=="var")> 进行实际的数据分组。

此外,您可能对CAMPAIGN的分面感兴趣而不是过滤。我会让你查一查。

编辑:

您可以执行以下操作:

plot_campaign <- function(campaign_type) {

ggplot(data = subset(data, campaign_type), aes(x=TIME)) +
geom_line(aes(y=total_races,colour="total_races")) + 
geom_line(aes(y =no_email_month,colour="total_emails"))+
geom_line(aes(y=total_cust,colour="total_customers"))+ 
scale_colour_manual("",
  values=c("total_races"="green","total_customers"="blue","total_emails"="red"))+
ylab(label="Numbers")+ xlab("Month") 
}

plot_campaign("Birthday")