[R] Help with plotting a line that is multicoloured based on levels of a factor
Pam Allen
allen_pam at hotmail.com
Fri Mar 25 21:19:51 CET 2011
Hello again,
I wrote an example that better represents my data, since the coloured points
are actually consecutive, but with variable lengths:
date=as.Date(c(1:300))
flow=sin(2*pi/53*c(1:300))
levels=c(rep(c("high","med","low"),100))
data=cbind.data.frame(date, flow, levels)
library(zoo)
z <- zoo(data$flow, data$date)
zz=cbind.data.frame(date=as.Date(rownames(cbind.data.frame(rollapply(z, 2,
align = "right", FUN="+")))),flow.change=(rollapply(z, 2, align =
"right",FUN="+" )))
names(zz)=c("date","todays.flow","next.day.flow")
zzz=cbind.data.frame(zz[,1], (zz[,3]-zz[,2]))
names(zzz)=c("date","change.flow")
data2=merge(data, zzz)
rate=zoo(data2$change.flow,data2$date)
x=cbind.data.frame(date=as.Date(rownames(cbind.data.frame(rollapply(rate, 2,
align="left", FUN="+")))), sign=rollapply(rate, 2, align="left",FUN="+"))
names(x)=c("date","todays.change","next.day.change")
xx=cbind.data.frame(x[,1],(x[,3]*x[,2]))
names(xx)=c("date","sign")
data2=merge(data2, xx)
data3=cbind(data2,pass1=
ifelse(data2$flow<0, "extreme.low",
ifelse(data2$flow>=0.9, "extreme.high","NA")))
data4=cbind(data3, pass2=
ifelse(data3$flow<0.8&data3$flow>0&data3$change.flow>=0&data3$change>=0&data3$pass1=="NA","medium"
,
ifelse(data3$flow<0.7&data3$flow>0&data3$change.flow<0&data3$change<0&data3$pass1=="NA","medium","NA")))
data4$pass1=paste(data4$pass1, data4$pass2)
data4$pass1=replace(data4$pass1, data4$pass1=="NA NA", "low")
dat=cbind(data4[,1:5], class=
ifelse(data4$pass1=="extreme.high NA","1.Extreme.High",
ifelse(data4$pass1=="NA medium","2.Medium",
ifelse(data4$pass1=="low","3.Low",
ifelse(data4$pass1=="extreme.low NA","4.Extreme.Low",NA)))))
colour=ifelse(dat$class=="1.Extreme.High","red",
ifelse(dat$class=="2.Medium","green",
ifelse(dat$class=="3.Low","blue",
ifelse(dat$class=="4.Extreme.Low","purple",""))))
plot(dat$date, dat$flow, col=colour)
What I would like to do is to plot this using a line with the correct
colours instead of points, i.e.:
plot(dat$date, dat$flow, col=colour, type="l") ##Doesn't work, because the
line is continuous
Any help would be much appreciated. Thank you!
-Pam
--
View this message in context: http://r.789695.n4.nabble.com/Help-with-plotting-a-line-that-is-multicoloured-based-on-levels-of-a-factor-tp3385857p3406309.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list