раскрасить plot в несколько цветов
- Dryomys
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 24 ноя 2010, 12:41
- Репутация: 3
- Откуда: Пущино
раскрасить plot в несколько цветов
Имеется вот такой plot. Нужно его раскрасить таким образом, чтобы линия графика под вертикальной линией (h=5) был одного цвета, а над ней другого. Пробовала через lines, но так и не придумала, как задать ей координату по y меньше или больше 5. Может, кто такое уже делал? Подскажите, как, пожалуйста!
- Вложения
-
- meteoWorms.jpeg (29.15 КБ) 5770 просмотров
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Re: раскрасить plot в несколько цветов
Воспользуйтесь пакетом ggpolt2. Добавьте к вашим данным колонку (пусть будет "column") в которой значениям, которые должны быть раскрашены в один цвет соответствовало одно и то же число (или слово). В опциях построения графика ggpot2 добавляете параметр colour = column. Например:
graphic <- ggplot(dataframe, aes(x = данные_по_иксу, y = данные_по_игреку) )
graphic + geom_line(aes(colour = column))
Что-то в этом роде.
graphic <- ggplot(dataframe, aes(x = данные_по_иксу, y = данные_по_игреку) )
graphic + geom_line(aes(colour = column))
Что-то в этом роде.
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
- Dryomys
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 24 ноя 2010, 12:41
- Репутация: 3
- Откуда: Пущино
Re: раскрасить plot в несколько цветов
спасибо)) Только это не совсем то.
Если бы мне один график надо было построить, я бы как-то так и сделала. Но у меня эти данные по температуре за несколько лет и графики нужны на каждый год (всего около 20ти), т.е. в каждом файле расставлять групповую принадлежность - это очень трудоемко. К тому же мне может и не 5 градусов нужно будет, а 10 или 0 или еще сколько-то.
Мне нужно как-то прописать условие, чтобы меньше пяти градусов одним цветом раскрашивались, а больше другим.
Если бы мне один график надо было построить, я бы как-то так и сделала. Но у меня эти данные по температуре за несколько лет и графики нужны на каждый год (всего около 20ти), т.е. в каждом файле расставлять групповую принадлежность - это очень трудоемко. К тому же мне может и не 5 градусов нужно будет, а 10 или 0 или еще сколько-то.
Мне нужно как-то прописать условие, чтобы меньше пяти градусов одним цветом раскрашивались, а больше другим.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: раскрасить plot в несколько цветов
поскольку это просто мурзилка, и точек много, заморачиваться не будем ...Dryomys писал(а):Имеется вот такой plot. Нужно его раскрасить таким образом, чтобы линия графика под вертикальной линией (h=5) был одного цвета, а над ней другого.
Код: Выделить всё
p.X<-seq(1,20,by=0.1)
p.Y<-sin(p.X)*10
plot(p.X,p.Y,type="l",col="black",lwd=3)
p.ind<-(p.Y <= 5)
tmp.X<-p.X
tmp.X[p.ind]<-NA
lines(tmp.X,p.Y,col="red",lwd=3)
abline(5,0,col="gray",lty=2)
Код: Выделить всё
p.X<-seq(1,20,by=0.1)
p.Y<-sin(p.X)*10
p.n<-length(p.X)
for(i in 2:p.n) {
if((p.Y[i-1] >= 5 && p.Y[i] <= 5) || (p.Y[i-1] <= 5 && p.Y[i] >= 5) ) {
tmp.dy<-p.Y[i]-p.Y[i-1]
if(abs(tmp.dy) > 0) {
tmp.alpha<-(5-p.Y[i-1])/tmp.dy
p.X<-c(p.X,p.X[i-1]+tmp.alpha*(p.X[i]-p.X[i-1]))
p.Y<-c(p.Y,5)
}
}
}
p.ind<-order(p.X)
p.X<-p.X[p.ind]
p.Y<-p.Y[p.ind]
plot(p.X,p.Y,type="l",col="black",lwd=3)
p.ind<-(p.Y < 5)
tmp.X<-p.X
tmp.X[p.ind]<-NA
lines(tmp.X,p.Y,col="red",lwd=3)
abline(5,0,col="gray",lty=2)
- Dryomys
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 24 ноя 2010, 12:41
- Репутация: 3
- Откуда: Пущино
Re: раскрасить plot в несколько цветов
Ого!
Большое спасибо! Буду осмыслять, как это устроено ))
Большое спасибо! Буду осмыслять, как это устроено ))
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 31 гость