2013-03-19 18 views
5

Mit aes_string macht es einfach Funktionen zu konstruieren Parameter zu ergreifen, um Grundstück:ggplot aes_string mit Interaktion

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

Jetzt

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

und die Funktion

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

Aber hier wird die Interaktion nicht verwendet, dh es wird nicht interpretiert. Ich möchte keine separaten Variablen für die Interaktion verwenden, da die gleiche Funktion für andere Diagramme verwendet werden könnte. Wie sollte ich die Interaktion so variabel gestalten, dass sie von ggplot akzeptiert und verstanden wird?

+2

'paste0 ("Interaktion (" paste0 (' "', in Wechselwirkung treten, '"', Kollaps =", ") , ")") "? – hadley

Antwort

2

Nach this Antwort sollte diese Arbeit (ohne die COLNAMES zitiert):

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