Как раскрасить фоновые участки графиков в R, чтобы указать интересующие периоды времени - PullRequest
0 голосов
/ 08 мая 2020

Я хотел бы добавить цветные «фрагменты» на фон моих графиков в R, чтобы выделить периоды вложенности. Моя ось x находится в днях, поэтому я бы хотел, чтобы цвета были установлены «от-до» в определенные дни. Я создал грубую ручную версию того, как я хотел бы, чтобы это выглядело на моем графике (см. Изображение), но я не уверен, как реализовать это в моем коде. В идеале я хотел бы иметь разные цвета для разных фрагментов, например оранжевый для одного периода и синий для другого интересующего периода, который также может отображаться в легенде справа. Мои данные - это расстояние в день, которое затем было преобразовано в стандартные отклонения для построения графиков.

enter image description here

Код ниже для расстояния до stdev, затем построение графика с использованием стандарта Функция plot ():

ig16 <- read.csv(file='ig16distance.csv')
ig16$stdDist <- (ig16$Distance - mean(ig16$Distance))/sd(ig16$Distance)
plot(ig16$stdDist, type = "o",col = "red", xlab = "Days", ylab = "Stdev", 
 main = "IG0016")

Примеры данных ниже:

    Day   Distance
1     1  20.396078
2     2  21.540659
3     3   4.000000
4     4  16.492423
5     5  16.000000
6     6  34.000000
7     7  34.234486
8     8   0.000000
9     9   4.000000
10   10   0.000000
11   11   0.000000
12   12   0.000000
13   13   0.000000
14   14  22.203603
15   15   0.000000
16   16   0.000000
17   17   2.280351
18   18   2.280351
19   19   2.280351
20   20   2.280351

Мы будем очень благодарны за любые советы по коду для достижения этой цели!

1 Ответ

0 голосов
/ 08 мая 2020

Поскольку вы не предоставляете данные, я проиллюстрирую их на нескольких простых примерах данных. Вы можете просто нанести несколько прозрачных прямоугольников на область, которую хотите выделить.

kings = c(60, 43, 67, 50, 56, 42, 50, 65, 68, 43, 65, 34, 47, 34, 49, 
41, 13, 35, 53, 56, 16, 43, 69, 59, 48, 59, 86, 55, 68, 51, 33, 
49, 67, 77, 81, 67, 71, 81, 68, 70, 77, 56)

plot(kings, type = "o",col = "red", xlab = "", ylab = "Years", 
 main = "Kings")
polygon(x=c(5,5,15,15), y=c(0,100,100,0), col="#0000FF22", border=F)
polygon(x=c(25,25,35,35), y=c(0,100,100,0), col="#FF990022", border=F)

Time series with highlighted periods.

...