Feedback welcome: sa.ra.online@posteo.de
1. Basic example
2. Installation
To install vistime
package from CRAN, type the following
in your R console:
For interactive hc_vistime()
plots, you need to install
the highcharter
package. This package is free for
non-commercial and non-governmental use:
3. Usage and default arguments
The simplest way to create a timeline is by providing a data frame
with event
and start
columns. If your columns
are named otherwise, you need to tell the function. You can also tweak
the y positions, title and label visibility.
4. Arguments
parameter | optional? | data type | explanation |
---|---|---|---|
data | mandatory | data.frame | data.frame that contains the data to be visualized |
col.event | optional | character | the column name in data that contains event names. Default: event |
col.start | optional | character | the column name in data that contains start dates. Default: start |
col.end | optional | character | the column name in data that contains end dates. Default: end |
col.group | optional | character | the column name in data to be used for grouping. Default: group |
col.color | optional | character | the column name in data that contains colors for events. Default: color, if not present, colors are chosen via RColorBrewer. |
col.tooltip | optional | character | the column name in data that contains the mouseover tooltips for the events. Default: tooltip, if not present, then tooltips are build from event name and date. Basic HTML is allowed. |
optimize_y | optional | logical | distribute events on y-axis by smart heuristic (default) or use order of input data. |
title | optional | character | the title to be shown on top of the timeline. Default: empty. |
show_labels | optional | logical | choose whether or not event labels shall be visible. Default:
TRUE . |
5. Value
hc_vistime
returns an object of classhighchart
andhtmlwidget
6. Examples
Ex. 1: Presidents
pres <- data.frame(Position = rep(c("President", "Vice"), each = 3),
Name = c("Washington", rep(c("Adams", "Jefferson"), 2), "Burr"),
start = c("1789-03-29", "1797-02-03", "1801-02-03"),
end = c("1797-02-03", "1801-02-03", "1809-02-03"),
color = c('#cbb69d', '#603913', '#c69c6e'),
fontcolor = c("black", "white", "black"))
hc_vistime(pres,
col.event = "Position",
col.group = "Name",
title = "Presidents of the USA") %>%
hc_size(width = 700, height = 300)
Ex. 2: Project Planning
data <- read.csv(text="event,group,start,end,color
Phase 1,Project,2016-12-22,2016-12-23,#c8e6c9
Phase 2,Project,2016-12-23,2016-12-29,#a5d6a7
Phase 3,Project,2016-12-29,2017-01-06,#fb8c00
Phase 4,Project,2017-01-06,2017-02-02,#DD4B39
Room 334,Team 1,2016-12-22,2016-12-28,#DEEBF7
Room 335,Team 1,2016-12-28,2017-01-05,#C6DBEF
Room 335,Team 1,2017-01-05,2017-01-23,#9ECAE1
Group 1,Team 2,2016-12-22,2016-12-28,#E5F5E0
Group 2,Team 2,2016-12-28,2017-01-23,#C7E9C0
3-200,category 1,2016-12-25,2016-12-25,#1565c0
3-330,category 1,2016-12-25,2016-12-25,#1565c0
3-223,category 1,2016-12-28,2016-12-28,#1565c0
3-225,category 1,2016-12-28,2016-12-28,#1565c0
3-226,category 1,2016-12-28,2016-12-28,#1565c0
3-226,category 1,2017-01-19,2017-01-19,#1565c0
3-330,category 1,2017-01-19,2017-01-19,#1565c0
1-217.0,category 2,2016-12-27,2016-12-27,#90caf9
4-399.7,moon rising,2017-01-13,2017-01-13,#f44336
8-831.0,sundowner drink,2017-01-17,2017-01-17,#8d6e63
9-984.1,birthday party,2016-12-22,2016-12-22,#90a4ae
F01.9,Meetings,2016-12-26,2016-12-26,#e8a735
Z71,Meetings,2017-01-12,2017-01-12,#e8a735
B95.7,Meetings,2017-01-15,2017-01-15,#e8a735
T82.7,Meetings,2017-01-15,2017-01-15,#e8a735")
hc_vistime(data)
Ex. 3: Gantt Charts
The argument optimize_y
can be used to change the look
of the timeline. TRUE
(the default) will find a nice
heuristic to save y
-space, distributing the events:
data <- read.csv(text="event,start,end
Phase 1,2020-12-15,2020-12-24
Phase 2,2020-12-23,2020-12-29
Phase 3,2020-12-28,2021-01-06
Phase 4,2021-01-06,2021-02-02")
hc_vistime(data, optimize_y = TRUE)
FALSE
will plot events as-is, not saving any space:
8. Usage in Shiny apps
hc_vistime()
objects can be integrated into Shiny viahighchartOutput()
andrenderHighchart()
library(vistime)
pres <- data.frame(Position = rep(c("President", "Vice"), each = 3),
Name = c("Washington", rep(c("Adams", "Jefferson"), 2), "Burr"),
start = c("1789-03-29", "1797-02-03", "1801-02-03"),
end = c("1797-02-03", "1801-02-03", "1809-02-03"),
color = c('#cbb69d', '#603913', '#c69c6e'),
fontcolor = c("black", "white", "black"))
shinyApp(
ui = highcharter::highchartOutput("myVistime"),
server = function(input, output) {
output$myVistime <- highcharter::renderHighchart({
vistime(pres, col.event = "Position", col.group = "Name")
})
}
)
9. Customization
Since every hc_vistime()
output is a
highchart
object, you can customize and override literally
everything using its functions. See ?hc_xAxis
,
?hc_chart
etc. and the official Highcharts API
reference for details.
library(highcharter)
p3 <- hc_vistime(data,
optimize_y = T,
col.group = "event",
title = "Highcharts customization example")
p3 %>% hc_title(style = list(fontSize = 30)) %>%
hc_yAxis(labels = list(style = list(fontSize=30, color="violet"))) %>%
hc_xAxis(labels = list(style = list(fontSize=30, color="red"), rotation=30)) %>%
hc_chart(backgroundColor = "lightgreen") %>%
hc_size(width = 700, height = 300)