Я редактирую это, чтобы предоставить лучший пример того, что мне нужно.Я буду хранить исходное сообщение внизу на случай, если это поможет.
У меня есть следующие данные:
x=c(1,2,7,3,4,8,9,5,6,7,11,13,15,8,9,10,11,12,13,15)
y=c(2:10,9,8,7,6,8,10,11,12,13,14,1)
date=strptime(20010101:20010120,'%Y%m%d')
z=data.frame(date,x,y)
z$diff=z$y-z$x
z$min=pmin(x,y)
z$max=pmax(x,y)
Итак, мои данные таковы:
date x y diff min max
1 2001-01-01 1 2 1 1 2
2 2001-01-02 2 3 1 2 3
3 2001-01-03 7 4 -3 4 7
4 2001-01-04 3 5 2 3 5
5 2001-01-05 4 6 2 4 6
6 2001-01-06 8 7 -1 7 8
7 2001-01-07 9 8 -1 8 9
8 2001-01-08 5 9 4 5 9
9 2001-01-09 6 10 4 6 10
10 2001-01-10 7 9 2 7 9
11 2001-01-11 11 8 -3 8 11
12 2001-01-12 13 7 -6 7 13
13 2001-01-13 15 6 -9 6 15
14 2001-01-14 8 8 0 8 8
15 2001-01-15 9 10 1 9 10
16 2001-01-16 10 11 1 10 11
17 2001-01-17 11 12 1 11 12
18 2001-01-18 12 13 1 12 13
19 2001-01-19 13 14 1 13 14
20 2001-01-20 15 1 -14 1 15
Я хочу создать полигональную диаграмму, в которой цвет полигона изменяется в зависимости от того, когда z $ diff меньше нуля.Таким образом, график должен выглядеть следующим образом:
Я знаю, что сегменты могут делать это с помощью линий, но, к сожалению, мне нужно сделать это с помощью многоугольника.
Исходное сообщение:
Допустим, у меня есть эти данные:
x=rnorm(100)
y=rnorm(100)
date=strptime(20010101:20010410,'%Y%m%d')
date=date[complete.cases(date)]
z=data.frame(date,x,y)
z$max=apply(z[2:3],1,which.max)
z$min=apply(z[2:3],1,which.min)
z$v=z$max-z$min
w=z[z$v<0,]
Затем я пытаюсь создать многоугольник, состоящий из двух цветов: один для случаев, когда x> y, а другой для случая, когда y> х.Я делаю это:
plot(z$date,z$x,type='n')
polygon(c(z$date,z$date[nrow(z):1]),c(z$x,z$y[nrow(z):1]),col='skyblue',border=NA)
polygon(c(w$date,w$date[nrow(w):1]),c(w$x,w$y[nrow(w):1]),col='salmon',border=NA)
Что происходит, когда во фрейме данных есть пробелы w
, полигон покрывает эти пробелы.Я знаю, как использовать обрезку для обрезки одной области, но можно ли ее использовать для обрезки нескольких пробелов во фрейме данных?
В идеале многоугольник w
должен перекрывать многоугольник z
всякий раз, когда y> x.