Ответ 1
Используйте .$Species
, чтобы вывести данные о видах в ggtitle
:
iris %>% group_by(Species) %>% do(plots=ggplot(data=.) +
aes(x=Petal.Width, y=Petal.Length) + geom_point() + ggtitle(unique(.$Species)))
Я хотел бы создать один отдельный график для каждой группы в кадре данных и включить группу в заголовок.
С набором данных диафрагмы я могу в базе R и ggplot сделать это
plots1 <- lapply(split(iris, iris$Species),
function(x)
ggplot(x, aes(x=Petal.Width, y=Petal.Length)) +
geom_point() +
ggtitle(x$Species[1]))
Существует ли эквивалент, использующий dplyr?
Здесь используется попытка использования граней вместо названия.
p <- ggplot(data=iris, aes(x=Petal.Width, y=Petal.Length)) + geom_point()
plots2 = iris %>% group_by(Species) %>% do(plots = p %+% . + facet_wrap(~Species))
где я использую% +%, чтобы заменить набор данных в p подмножеством для каждого вызова.
или (рабочий, но сложный) с ggtitle
plots3 = iris %>%
group_by(Species) %>%
do(
plots = ggplot(data=.) +
geom_point(aes(x=Petal.Width, y=Petal.Length)) +
ggtitle(. %>% select(Species) %>% mutate(Species=as.character(Species)) %>% head(1) %>% as.character()))
Проблема заключается в том, что я не могу установить заголовок для каждой группы с ggtitle очень простым способом.
Спасибо!
Используйте .$Species
, чтобы вывести данные о видах в ggtitle
:
iris %>% group_by(Species) %>% do(plots=ggplot(data=.) +
aes(x=Petal.Width, y=Petal.Length) + geom_point() + ggtitle(unique(.$Species)))
Это еще один вариант, используя rowwise
:
plots2 = iris %>%
group_by(Species) %>%
do(plots = p %+% .) %>%
rowwise() %>%
do(x=.$plots + ggtitle(.$Species))