У вас есть несколько опечаток / неправильный синтаксис:
Сначала рассмотрим 2-й пример:
dados$time <- factor(dados$time, levels=c("pre", "during", "post"))
ggplot(data, aes(value, time, fill = anesthesia)) +
geom_point() +
ggthemes::theme_few() +
facet_wrap(~ specie)
Ваши данные называются dados
, видимо, но вы используете ggplot(data, ...)
. Это отлично работает для меня, если я изменю ggplot(data, ...)
на ggplot(dados, ...)
.
В первом примере вы смешиваете синтаксис dplyr
и base
несовместимыми способами. Всякий раз, когда вы используете канал %>%
, вы должны передать в функцию.
dados %>%
#filter is a function, this works
filter(anesthesia %in% c(aa, bb, cc, dd)) %>%
# but you cannot pipe into this next line:
dados$time <- factor(dados$time, levels=c("pre", "during", "post")) +
# and you cannot use `+` before using `ggplot()`
ggplot(aes(x=value,y=time, fill=factor(anesthesia))) +
geom_point() +
ggthemes::theme_few() +
facet_wrap(~ specie)
Переписать это во всех dplyr
:
dados %>%
filter(anesthesia %in% c(aa, bb, cc, dd)) %>%
mutate(time = factor(time, levels=c("pre", "during", "post")) %>%
ggplot(aes(x=value,y=time, fill=factor(anesthesia))) +
geom_point() +
ggthemes::theme_few() +
facet_wrap(~ specie)
Решение: для меня это прекрасно работает
dados = dd
dados$time <- factor(dados$time, levels=c("pre", "during", "post"))
ggplot(dd, aes(value, time, color = anesthesia)) +
geom_point() +
facet_wrap(~ specie)
Вы заметите, что я переключил fill
на color
для очков. Я также попытался добавить geom_text(aes(label = anesthesia))
, чтобы напечатать текстовый код на графике, как при моделировании в фотошопе, но некоторые точки очень близки друг к другу, поэтому они выглядели не очень хорошо. С коробками они выглядели бы еще хуже, поэтому я не пробовал коробки.