ggplot aes_string mit Interaktion

Die Verwendung von aes_string macht es einfach, Funktionen zu konstruieren, um Parameter zum Zeichnen zu verwenden:

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

Nun schreiben wir die Funktion

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

und um die Funktion aufzurufen

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

Aber hier wird die Interaktion nicht verwendet, d. H. Nicht interpretiert. Ich möchte keine separaten Variablen für die Interaktion verwenden, da dieselbe Funktion auch für andere Diagramme verwendet werden könnte. Wie soll ich vorgehen, um die Interaktionsvariable so zu gestalten, dass sie von ggplot akzeptiert und verstanden wird?

 hadley22. März 2013, 17:39
paste0("interaction(", paste0('"', interact, '"', collapse = ", "), ")") ?

Antworten auf die Frage(1)

Gemäßdiese antwort das sollte funktionieren (ohne die colnames zu zitieren):

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

Ihre Antwort auf die Frage