2015-03-30 2 views
2

Я хотел бы построить график GGplot и построить промежуточные шаги. Можно ли обойтись без первого присвоения и последующего построения графика?Задание и обработка объекта ggplot2 в том же выражении

p0 <- ggplot(mtcars, aes(mpg, cyl)) + geom_point() 
p0 
p1 <- p0 + scale_x_sqrt() 
p1 
p2 <- p1 + facet_wrap(~gear) 
p2 

Что-то вроде

ggplot(mtcars, aes(mpg, cyl)) + geom_point() %P>% 
+ scale_x_sqrt() %P>% 
+ facet_wrap(~gear) 

Который производит три участка, но ничего не возвращает

ответ

1

Конечно вещь!

`%P+%` <- function(p1, p2) {p <- ggplot2:::`+.gg`(p1, p2); print(p); invisible(p)} 

И призыв

ggplot(mtcars, aes(mpg, cyl)) %P+% 
    geom_point() %P+% 
    scale_x_sqrt() %P+% 
    facet_wrap(~gear) 

получит Вас три участка в ряд. Единственное ограничение заключается в том, что вы должны быть осторожны при смешивании обычных + и %P+% из-за проблем с приоритетом.

+0

Спасибо. Можно ли проводить оценку на каждом шагу, а не ждать до конца трубопровода? – Rickard

+0

Добро пожаловать! Ну, я добавил 'Sys.sleep', и я вижу немедленную оценку для каждого шага, может быть, я задал вопрос. – tonytonov

 Смежные вопросы

  • Нет связанных вопросов^_^