Я видел этот вопрос ранее, но, казалось бы, простое решение у меня не работает. Я пытаюсь добавить горизонтальные линии, указывающие дату обработки на моем фасетном ggplot, но все равно получаю сообщение об ошибке.
ggplot code:
p <- ggplot(mastersumm, aes(x = date, y = count, group = type)) +
geom_point(size = 1) +
geom_line(aes(linetype = type)) +
geom_errorbar(aes(ymin = count-se, ymax = count+se), width=.2) +
facet_grid(mastersumm$treatment, scales = "fixed", labeller = labeller(type = long_types, treatment = long_types)) +
theme(panel.background = element_rect(fill='white', colour='black'), legend.position = "top") +
scale_fill_grey()
, что дает:
введите описание изображения здесь
Я пробовал создать настраиваемый фрейм данных для добавления настраиваемых строк. Я включил значение NA для элемента управления, так как он не должен получать вертикальную линию. Я включил множитель both
дважды, чтобы получить две вертикальные линии:
treatment <- as.factor(c("control", "early", "late", "both", "both"))
date <- c("", "2013-05-23", "2013-06-04", "2013-05-23", "2013-06-04")
date <- as.Date(date, format = "%Y-%m-%d")
vline.df <- data.frame(treatment, date)
, что дает:
> vline.df
treatment date
1 control <NA>
2 early 2013-05-23
3 late 2013-06-04
4 both 2013-05-23
5 both 2013-06-04
treatment
и date
одинаковы class, как в принимающем ggplot (коэффициент, дата, соответственно).
Наконец, я пробую следующий ввод:
p + geom_vline(data = vline.df, aes(xintercept = date))
только для получения следующей ошибки:
Ошибка в $<-.data.frame
(*tmp*
, «ПАНЕЛЬ», значение = c (1L, 2L, 3L, 4L,: замена имеет 40 строк, данные имеют 5