2017-06-21 3 views
-1

Ich möchte mehrere Plots erstellen, die die gleiche x, aber verschiedene y's haben, die purrr-Paketmethode verwenden. Das heißt, ich möchte die Funktionen map() oder walk() verwenden, um dies auszuführen.ggplot mit purrr map(), um dasselbe x mit mehreren y's zu plotten

Verwendung von mtcars-Datensätzen zur Vereinfachung.

ggplot(data = mtcars, aes(x = hp, y = mpg)) + geom_point() 
ggplot(data = mtcars, aes(x = hp, y = cyl)) + geom_point() 
ggplot(data = mtcars, aes(x = hp, y = disp)) + geom_point() 

bearbeiten Bisher habe ich versucht,

y <- list("mpg", "cyl", "disp") 
mtcars %>% map(y, ggplot(., aes(hp, y)) + geom_point() 
+2

Haben Sie schon etwas probiert? Wo bist du stecken geblieben? – aosmith

+0

Ich hatte versucht, eine Liste meiner y-Variablen 'y <- Liste (" mpg "," cyl "," disp ") zu erstellen und diese als mein .x-Argument in map() zu verwenden. Für das Argument .f. Ich habe 'ggplot (data =., Aes (x = hp, y = y)) + geom_point()' verwendet. Beachten Sie, dass ich angefangen hatte, indem ich in der Map-Funktion von mtcars eingab, so dass ich die Daten mit '.' anrief. Ich lernte aus der Antwort unten (Danke an MrFlick), dass die aes_string() -Funktion für die Aufrufe Ihrer Ästhetik verwendet werden kann. Ich wusste auch nicht, wie man eine anonyme Funktion oder eine Formel verwendet, um die gewünschten Ergebnisse zu erzielen. – tictacjoe

Antwort

1

Diese eine Möglichkeit ist,

ys <- c("mpg","cyl","disp") 
ys %>% map(function(y) 
    ggplot(mtcars, aes(hp)) + geom_point(aes_string(y=y))) 

Es ist wie jede andere Map-Funktion, die Sie gerade benötigen, um Ihre Ästhetik richtig konfigurieren in der Funktion.

+0

Danke für Ihre Hilfe! – tictacjoe

Verwandte Themen