geom_ribbon, использующий несколько наборов данных в ggplot2: ошибка в as.POSIXct - PullRequest
0 голосов
/ 11 июня 2019

Я использую несколько наборов данных в ggplot2 для создания временных рядов событий. План состоит в том, чтобы построить средние линии (означающие среднюю дату появления) двух наборов данных во времени и использовать geom_ribbon, чтобы изобразить диапазон между +1 и -1 стандартным отклонением выше и ниже среднего (перечислены ниже в столбцах «sdv_pos») и "sdv_neg", представляющий +1 и -1 соответственно).

Я могу построить две средние линии. Однако, когда я вставляю geom_ribbon, я получаю следующую ошибку: «Ошибка в as.POSIXct.numeric (value): необходимо указать« origin »». Я попытался преобразовать столбцы, используемые в строке geom_ribbon (), используя as.POSIXct () с источником, но это не сработало. Я получаю эту ошибку только с geom_ribbon (), а не geom_line ()

Вот два набора данных: Data1:

   sdv_pos   stv_neg   year data1_mean 
 1976-03-20 1976-03-14 1997 1976-03-17 
 1976-02-18 1976-01-18 1998 1976-02-03 
 1976-02-12 1976-01-06 1999 1976-01-24 
 1976-03-02 1976-01-07 2000 1976-02-04 
 1976-01-10 1976-01-10 2001 1976-01-10 
 1976-04-21 1976-02-19 2002 1976-03-21 1

Data2:

   sdv_pos    sdv_neg  year data2_mean
 1976-04-24 1976-03-10 1997 1976-04-02
 1976-04-21 1976-01-27 1998 1976-03-10
 1976-04-21 1976-01-20 1999 1976-03-07
 1976-03-23 1976-01-04 2000 1976-02-12
 1976-05-05 1976-02-08 2001 1976-03-23
 1976-05-01 1976-01-29 2002 1976-03-16

Вот код, который я использую для этого. Обратите внимание, что когда я удаляю geom_ribbon, график работает. Однако, когда я включаю geom_ribbon, я получаю ошибку.


graph1<- ggplot()+
  geom_line(data = Data1, aes(x = year, y = data2_mean), color = "blue")+
  geom_ribbon(data = Data1, aes(x=data2_mean, ymax=sdv_pos, ymin=sdv_neg), fill="pink", alpha=.5)+
  geom_line(data = Data2, aes(x = year, y=data2_mean), color = "red")+
  geom_ribbon(data = Data2, aes(x=data2_mean, ymax=sdv_pos, ymin=sdv_neg), fill="yellow", alpha=.5)

Обратите внимание, что год для оси x и год для значений данных не совпадают. Я использую 1976 только для того, чтобы сохранить среднюю линию в одной и той же дате / месяце, в противном случае ось Y будет охватывать все годы в исследовании

1 Ответ

0 голосов
/ 12 июня 2019

Я нашел ответ, изменив команду на

geom_ribbon(data = Data1, aes(x=data2_mean, ymax=sdv_pos, ymin=sdv_neg), fill="pink", alpha=.5)+

Разница в том, каково значение x.Я думал, что должен был включить среднее значение в качестве центральной линии для ленты, но он просто затеняет пространство между двумя линиями (sdv_pos, sdv_neg) и нуждается в x для оси x, чтобы затенить область по мере ее появления,

Кажется очевидным, но я хотел бы опубликовать здесь ответ на случай, если кто-то столкнется с той же проблемой

...