2013-05-24 10 views
6

Zastanawiam się, czy można stworzyć podobny zestaw liczb w ggplot2 i jakoś zmienić dane. Na przykład mogę utworzyć funkcję umożliwiającą wykonanie tego zadania:tworzyć szablony za pomocą składni ggplot2?

plot1 <- function(data) ggplot(data) + geom_line(aes(x,y)) + theme_bw() 
plot1(data) 
plot1(newdata) 

Ale czy możliwe jest zapisanie i ponowne użycie zestawu komponentów w taki sposób? (Oczywiście nie działa)

g <- geom_line(aes(x,y)) + theme_bw() 
ggplot(data) + g 
ggplot(newdata) + g 
+0

Można umieścić go w funkcji, 'template = function (d) ggplot (d) + geom_line (AES (x, y)) + theme_bw () ', chociaż zgadzam się, byłem rozczarowany, gdy nie mogłem zapisać komponentów w sposób, w jaki tu próbujesz. –

Odpowiedz

14

Istnieją sposoby +.gg opisano here

%+% i %+replace% które aktualizuje/wymiany elementów w ggplot S i themes

np

p <- ggplot(mtcars, aes(x =wt, y = mpg,colour = hp)) + geom_point() 

# change the variable mapped to y 
p %+% aes(y = am) 
# change the data set 
p %+% mtcars[1:10,] 

Albo Ty Można łączyć elementy w postaci listy

np

# 
g <- list(geom_line(aes(x,y)),theme_bw()) 
ggplot(data) + g 
+0

Myślałem, że będzie to 'p + aes()', '% +%' jest tylko dla danych – baptiste

Powiązane problemy