[R] How would I color points conditional on their value in a plot of a time series

Martin Maechler m@echler @ending from @t@t@m@th@ethz@ch
Wed May 2 10:01:11 CEST 2018


>>>>> Eivind K Dovik <hello at eivinddovik.com>
>>>>>     on Tue, 1 May 2018 23:18:51 +0200 writes:

    > You may also want to check this out:

    > plot(ttt, type = "p")
    > points(ttt, col = ifelse(ttt < 8, "black", "red"))

    > Eivind K. Dovik
    > Bergen, NO

yes, indeed,  or -- even nicer for a time series:
using  'type = "c"'  which many people don't know / have forgotten about:

ttt <- ts(rpois(12, lambda = 8), start = c(2000, 1), freq = 4)
plot  (ttt, type = "c")
points(ttt, col = ifelse(ttt < 8, "black", "red"))

Martin Maechler



    > On Tue, 1 May 2018, Christopher W Ryan wrote:

    >> Excellent! Worked like a charm. Thanks.
    >> 
    >> --Chris Ryan
    >> 
    >> On Tue, May 1, 2018 at 4:33 PM, William Dunlap <wdunlap at tibco.com> wrote:
    >> 
    >>> The ts method for plot() is quirky.  You can use the default method:
    >>> 
    >>> plot(as.vector(time(ttt)), as.vector(ttt), type = "p", col=ifelse(ttt<8,
    >>> "black", "red"))
    >>> 
    >>> 
    >>> Bill Dunlap
    >>> TIBCO Software
    >>> wdunlap tibco.com
    >>> 
    >>> On Tue, May 1, 2018 at 1:17 PM, Christopher W Ryan <cryan at binghamton.edu>
    >>> wrote:
    >>> 
    >>>> How would I color points conditional on their value in a plot of a time
    >>>> series.  Something like this:
    >>>> 
    >>>> ## demonstration data
    >>>> ttt <- ts(rpois(12, lambda = 8), start = c(2000, 1), freq = 4)
    >>>> ttt
    >>>> plot(ttt, type = "p")
    >>>> 
    >>>> ## doesn't work--all points the same color
    >>>> plot(ttt, type = "p", col = ifelse(ttt < 8, "black", "red"))
    >>>> 
    >>>> ## also doesn't work--all points the same color
    >>>> q <- as.numeric(ttt)
    >>>> q
    >>>> plot(ttt, type = "p", col = ifelse(q < 8, "black", "red"))
    >>>> 
    >>>> 
    >>>> ## works OK with a simple, non-time-series scatterplot, as in
    >>>> 
    >>>> sss <- data.frame(x = rpois(12, lambda = 8), y = rnorm(12, mean = 100, sd
    >>>> =
    >>>> 25))
    >>>> with(sss, plot(y ~ x, col = ifelse(y > 100, "black", "red")))
    >>>> 
    >>>> ## but I am missing something about time series.
    >>>> 
    >>>> Thanks.
    >>>> 
    >>>> --Chris Ryan
    >>>> Broome County Health Department
    >>>> and Binghamton University
    >>>> Binghamton, NY
    >>>> 
    >>>> [[alternative HTML version deleted]]
    >>>> 
    >>>> ______________________________________________
    >>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
    >>>> https://stat.ethz.ch/mailman/listinfo/r-help
    >>>> PLEASE do read the posting guide http://www.R-project.org/posti
    >>>> ng-guide.html
    >>>> and provide commented, minimal, self-contained, reproducible code.
    >>>> 
    >>> 
    >>> 
    >> 
    >> [[alternative HTML version deleted]]
    >> 
    >> ______________________________________________
    >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
    >> https://stat.ethz.ch/mailman/listinfo/r-help
    >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    >> and provide commented, minimal, self-contained, reproducible code.
    >> 

    > ______________________________________________
    > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
    > https://stat.ethz.ch/mailman/listinfo/r-help
    > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    > and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list