Ниже в упрощенной форме описывается проблема, с которой я часто сталкиваюсь, но никогда не заставляю ее работать. Это связано с наложением слоев с различной информацией.
Любая помощь приветствуется.
library(dplyr)
library(ggplot2)
df = data.frame(id = c(1,1,1,1,2,2,2,3,3,3),
year = c(2000,2001,2002,2003,2000,2001,2002,2001,2002,2003),
meas = c(1.1,1.2,NA,1.4,2.1,1.9,1.8,3.1,3.0,3.3))
df$id = as.factor(df$id)
df$year = as.factor(df$year)
tib = as.tbl(df)
, который производит тибль:
# A tibble: 10 x 3
id year meas
<fctr> <fctr> <dbl>
1 1 2000 1.1
2 1 2001 1.2
3 1 2002 NA
4 1 2003 1.4
5 2 2000 2.1
6 2 2001 1.9
7 2 2002 1.8
8 3 2001 3.1
9 3 2002 3.0
10 3 2003 3.3
В настоящее время я вычисляю медиану показателей для каждого года в поперечном сечении.
tib2 = tib %>% group_by(year) %>%
summarise(medi=median(meas,na.rm=T))
tib2
Что дает, как и ожидалось
# A tibble: 4 x 2
year medi
<fctr> <dbl>
1 2000 1.60
2 2001 1.90
3 2002 2.40
4 2003 2.35
Пока все хорошо. Теперь я создаю свой первый сюжет
p = ggplot(tib, aes(x = year, y = meas, group = id, color = id))
p = p + geom_line()
p
который производит
С другой стороны, следующее дает набор жирных точек, как и должно быть
p1=ggplot(tib2, aes(x = year, y = medi)) + geom_point(colour = 'red', size = 3)
p1
Однако я стараюсь разместить красные точки на первой фигуре так:
p = p + geom_point(data = tib2, aes(x = year, y = medi), colour = 'red', size = 3)
p
Здесь я получаю сообщение об ошибке:
Не знаю, как автоматически выбрать масштаб для объекта типа функции. По умолчанию для непрерывного.
Ошибка в (функция (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,
аргументы подразумевают различное количество строк: 4, 0
Примечание: я заметил, что пропущенное значение вызывает разрез в красной линии, который я мог бы захотеть интерполировать. Когда я заменяю NA на какое-то значение, ошибка сохраняется