How to get geom_step to play nicely with discrete factors on y-axis?

Viewed 791

I'd like to produce a step plot using ggplot2. I have datetime along the x-axis, and four discrete non-numeric factor levels on the y-axis. I'd like a line with steps between the levels where appropriate, but right now the code i've produced in ggplot2 isn't working. Any advice greatly appreciated!

So far I have the following code:

ggplot(s2, aes(x = datetime, y = activity)) + geom_step(colour = "blue")

which produces:

augh!

However, what I'd like is something that looks like this (I switched to geom_point, which works fine, and added the step lines by hand):

what i'd like

Here's a subset of my data, as a data.frame with with datetime (POSIXct) and activity (factor):

s2 <- structure(list(`datetime` = structure(c(1496102400L, 
1496109600L, 1496116800L, 1496124000L, 1496131200L, 1496138400L, 
1496145600L, 1496152800L, 1496160000L, 1496167200L, 1496174400L, 
1496181600L, 1496188800L, 1496196000L, 1496203200L, 1496210400L, 
1496217600L, 1496224800L, 1496232000L, 1496239200L, 1496246400L, 
1496253600L, 1496260800L, 1496268000L, 1496275200L, 1496282400L, 
1496289600L, 1496296800L, 1496304000L, 1496311200L, 1496318400L, 
1496325600L, 1496332800L, 1496340000L, 1496347200L, 1496354400L, 
1496361600L, 1496368800L, 1496376000L, 1496383200L, 1496390400L, 
1496397600L, 1496404800L, 1496412000L, 1496419200L, 1496426400L, 
1496433600L, 1496440800L, 1496448000L, 1496455200L), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), activity = structure(c(1L, 2L, 3L, 
4L, 4L, 4L, 4L, 4L, 1L, 1L, 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, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("HO", 
"TR", "FO", "SE"), class = "factor")), .Names = c("datetime", 
"activity"), row.names = c(NA, -50L), class = "data.frame")
0 Answers
Related