Предположим, у меня есть следующий фрейм данных:
dates types vals
1 2018-02-01 a 10
2 2018-03-01 a 11
3 2018-04-01 a 12
4 2018-05-01 b 20
5 2018-06-01 b 21
6 2018-07-01 b 22
7 2018-08-01 c 30
8 2018-09-01 c 31
9 2018-10-01 c 32
Я визуализировал ее как сетку с 3 гранями (по одной для каждого типа: a, b и c) с общей осью X (даты):
gg <- ggplot(df, aes(x = dates, y = vals)) +
geom_line(aes(color = df$types)) +
geom_point() +
facet_grid(types ~ ., scales = "free_y") +
scale_color_manual(values =c("blue", "orange", "green"))
Теперь я хотел бы добавить горизонтальную линию для каждого фасета, чтобы у каждого фасета был свой собственный y-перехват. Исходя из аналогичных вопросов, я попытался создать фрейм данных со столбцом перехватов:
lower = seq(10,30,10); upper = seq(12,32,10)
bounds <- data.frame(lower, upper)
И добавить его, используя geom_hline
:
gg + geom_hline(aes(yintercept = lower), data = bounds, color = 'red')
Но в результате получается, что каждый фасет имеет все три строки вместо отдельной строки (я также хочу добавить строку со столбцом upper
, но я думаю, что решение симметрично).