Can someone help walk me through the general approach to solving this problem?
I'm trying to replicate a Train Diagram like this one (full size) using some train movement data of my own.
The graph looks to consist of...
And my data looks like this...
Thanks for the help :)
Sample can be reproduced like so...
dat <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L), .Label = c("2011U0024", "2011U0025",
"2011U0026", "2011U0035", "2011U0039", "2011U0040", "2011U0041",
"2011U0046", "2011U0047", "2011U0049"), class = "factor"), location = structure(c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L), .Label = c("a",
"b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"
), class = "factor"), time = structure(c(1294079880, 1294093080,
1294094880, 1294100400, 1294102380, 1294124100, 1294125240, 1294126920,
1294129020, 1294140120, 1294140900, 1294143960, 1294145100, 1294146600,
1294086240, 1294100400, 1294105440, 1294111560, 1294114740, 1294137180,
1294138380, 1294140120, 1294141320, 1294152420, 1294158000, 1294158900,
1294160100, 1294162200, 1294100700, 1294113180, 1294115220, 1294120980,
1294134780, 1294153920, 1294155060, 1294156680, 1294158480, 1294169460,
1294170420, 1294171020, 1294171200, 1294173900, 1294290660, 1294307040,
1294308720, 1294313880, 1294315860, 1294342200, 1294344600, 1294345080,
1294347180, 1294358400, 1294360200, 1294360440, 1294360800, 1294364100,
1294348860, 1294361400, 1294363500, 1294369560, 1294379160, 1294405080,
1294407240, 1294407900, 1294409940, 1294421040, 1294421400, 1294421880,
1294423200, 1294425240, 1294364100, 1294378200, 1294380180, 1294385700,
1294388220, 1294414500, 1294416600, 1294421040, 1294422720, 1294434720,
1294435500, 1294435920, 1294436400, 1294438920, 1294384440, 1294399440,
1294401120, 1294406520, 1294408800, 1294429560, 1294431960, 1294434720,
1294435980, 1294448160, 1294448340, 1294449360, 1294451400, 1294453500,
1294468860, 1294502640, 1294504020, 1294509360, 1294514520, 1294537980,
1294541400, 1294543920, 1294544640, 1294555860, 1294556520, 1294557120,
1294558200, 1294564860, 1294501680, 1294513560, 1294515300, 1294521120,
1294523820, 1294545960, 1294548780, 1294556820, 1294557420, 1294571580,
1294572000, 1294572420, 1294575600, 1294579500, 1294549080, 1294562460,
1294566300, 1294572180, 1294575420, 1294602180, 1294604520, 1294605300,
1294606020, 1294617060, 1294620540, 1294620720, 1294624800, 1294630080
), class = c("POSIXct", "POSIXt"), tzone = "")), .Names = c("id",
"location", "time"), row.names = c(NA, -140L), class = "data.frame")
It is rather straight-forward in ggplot
. A single line of code suffices:
ggplot(dat, aes(x=time, y=location, colour=id, group=id)) + geom_line()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With