library(dplyr) #Devel version, soon-to-be-released 0.6.0
library(tidyr)
library(ggplot2)
library(forcats) #for gss_cat data
我試圖寫一個從即將要發佈的dplyr devel的版本tidyr組合在一起quosures功能使用開發人員版本dplyr的enquo和quo_name的一個功能:: gather和ggplot2。到目前爲止,它似乎與tidyr一起工作,但我在繪圖時遇到了麻煩。如何使用tidyr和GGPLOT2
下面的功能似乎與tidyr的收集工作:
GatherFun<-function(gath){
gath<-enquo(gath)
gss_cat%>%select(relig,marital,race,partyid)%>%
gather(key,value,-!!gath)%>%
count(!!gath,key,value)%>%
mutate(perc=n/sum(n))
}
但我不能想出如何使該地塊的工作。我嘗試用ggplot2使用!! gath,但它不起作用。
GatherFun<-function(gath){
gath<-enquo(gath)
gss_cat%>%select(relig,marital,race,partyid)%>%
gather(key,value,-!!gath)%>%
count(!!gath,key,value)%>%
mutate(perc=n/sum(n))%>%
ggplot(aes(x=value,y=perc,fill=!!gath)+
geom_col()+(facet_wrap(~key, scales = "free") +
geom_text(aes(x = "value", y = "perc",
label = "perc", group = !!gath),
position = position_stack(vjust = .05))
}
我要回答的更近的問題適用於:使用dplyr SE與GGPLOT2(https://stackoverflow.com/questions/45279287/use-dplyr-se-with-ggplot2/47044567#47044567)。簡而言之,我建議你使用aes_(x =〜value,y =〜perc,fill = gath)。當你已經有quards在使用時,語法比使用aes_string更清晰。 – Stanwood