[R] Help with plotting a line that is multicoloured based on levels of a factor
David Winsemius
dwinsemius at comcast.net
Fri Mar 18 03:22:20 CET 2011
On Mar 17, 2011, at 6:33 PM, Pamela Allen wrote:
>
> Hi All,
> I'm trying to plot data that is a time series of flows that are
> associated
> with a specific level, and I would like each level to represent a
> colour
> in a line plot. Here is some data that approximates what I'm using:
>
> 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)
>
> the "levels" column represents the levels of flow. What I've done
> so far
> is to plot this data using coloured points corresponding with each
> flow
> level:
>
> colour=ifelse(data$levels=="high","red",
> ifelse(data$levels=="med","green",
> ifelse(data$levels=="low","blue","")))
> plot(date, flow, col=colour)
>
> What I would like to do instead is to plot the line of this data,
> not the
> points. i.e.,
>
> plot(date, flow, type="l")
>
> But I would like the colour of the line to change with each level,
> i.e.,
>
> plot(date, flow, type="l", col=colour)
>
> But this doesn't work because the line is continuous and the colours
> are
> discrete. I looked into using clipplot, but I'm not sure how I would
> specify limits that would give different sections of the line correct
> colours. Does anyone know of a way to draw a line with different
> colours?
> One way I thought of was to plot each level of flow separately and
> then
> build the plot up, i.e.,
>
> plot(data$date[data$levels=="high"], data$flow[data$levels=="high"],
> col="red", type="l")
>
> lines(data$date[data$levels=="med"], data$flow[data$levels=="med"],
> col="green", type="l")
>
> lines(data$date[data$levels=="low"], data$flow[data$levels=="low"],
> col="blue", type="l")
>
>
>
> But the line fills in data gaps, so this doesn't work.
I haven't worked through what you have done but it sounds as though
you want this function from the plotrix package;
color.scale.lines # Display line segments with scaled colors
>
>
>
> Any help would be much appreciated! Thank you.
>
> -Pam Allen
>
> pallen at hatfieldgroup.com
> .
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list