2013-03-19 12 views
5

Utilizzando aes_string rende facile costruire funzioni a prendere i parametri per tracciare:ggplot aes_string con l'interazione

p <- ggplot(mtcars, aes_string(x="mpg", y="wt", group=interaction("cyl","gear"))) + 
    geom_point() 

Ora per scrivere la funzione

make_plot <- function(x,y, interact) { 
    p <- ggplot(mtcars, aes_string(x=x, y=y, group=interact)) + 
     geom_point() 
} 

e di chiamare la funzione

make_plot("mpg","wt",c("cyl","gear")) 

Ma qui l'interazione non viene utilizzata, cioè, non viene interpretata. Non voglio usare variabili separate per l'interazione bcos, la stessa funzione potrebbe essere usata per altri grafici. Come dovrei fare per rendere la variabile di interazione tale da essere accettata e compresa da ggplot?

+2

'paste0 ("interazione (", paste0 (' "', interagire, '"', collasso =", ") , ")") '? – hadley

risposta

2

Secondo this risposta questo dovrebbe funzionare (senza citare i colnames):

p <- ggplot(mtcars, aes_string(x=x, y=y, group=paste0("interaction(", paste0(interact, 
    collapse = ", "), ")"))) + geom_point()