[R] xyplot and lsegments

hadley wickham h.wickham at gmail.com
Fri Feb 8 16:49:23 CET 2008


On Feb 8, 2008 9:36 AM, Alex Brown <fishtank at compsoc.man.ac.uk> wrote:
> Hi,
>
>         How might I use xyplot to plot segments where the segments are in the
> input data? (ie a directed acyclic forest).
>
>         Here's an example in base graphics:
>
> n = data.frame(id = c(1,2,3,4), parent = c(0,1,2,2), value =
> c(5,5.5,7,3), date = c(1,2,3,3.5))
>
> plot(n$date, n$value)
>
> do.call(
>   segments,
>   with(
>     merge(n,n,by.x="parent", by.y="id"),
>     data.frame(x0=date.x, y0=value.x, x1=date.y, y1=value.y)
>   )
> )
>
>         xyplot only seems to take an x and a y, and panels only seem to get x
> and y.
>
>         I can see an lsegments, but I can't see how to use it in this example.

It's straightforward with ggplot2:

install.packages("ggplot2")
library(ggplot2)

df <- data.frame(id = c(1,2,3,4), parent = c(0,1,2,2), value =
c(5,5.5,7,3), date = c(1,2,3,3.5))

selfmerge <- merge(df, df, by.x="parent", by.y="id")

qplot(date, value, data=df) +
geom_segment(data=selfmerge, aes(x=date.x, xend=date.y, y=value.x,
yend=value.y))

You can read more at http://had.co.nz/ggplot2/

Hadley




-- 
http://had.co.nz/



More information about the R-help mailing list