I'm looking for a solution to plot a time axis where events are marked as red vertical lines. I didn't find anything like that:
(the height of the red lines should be equal)
The data is just a list of unix timestamps which should be plotted as red strings between a timespan.
How to plot using ggplot?
First, here are some sample dates:
sampleDates <-
sample(seq(as.Date("2016-01-01")
, as.Date("2016-12-31")
, 1)
, 60)
Then, here is an extension of the starting point from @zx8754's comment (note: mtcars
is a builtin data set). Here, I add an arrow (instead of just a line), then use geom_linerange
because you can get a vertical line in the legend, e.g., if you are coloring lines by event type. Everything from theme_minimal
down is just shifting display options to make it prettier.
ggplot() +
geom_segment(
aes(x = min(sampleDates) - 10
, xend = max(sampleDates) + 20
, y = 0
, yend = 0)
, arrow = arrow()
) +
geom_linerange(
aes(x = sampleDates
, ymin = -1
, ymax = 1)
, col = "red") +
xlab("Sample Date") +
theme_minimal() +
theme(axis.text.y = element_blank()
, axis.title.y = element_blank()
, panel.grid.major.y = element_blank()
, panel.grid.minor.y = element_blank()
) +
scale_x_date(date_breaks = "1 month"
, date_labels = "%Y\n%b-%d")