我在尝试绘制子集数据的函数时遇到错误。我的功能如下:
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
非常感谢有人可以提供帮助。我的虚拟数据图片如下:
答案 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")