Token replay animation for process maps created with 'processmapR' by using SVG animations ('SMIL') and the 'htmlwidget' package.
Flexible token replay animation for process maps created through the processmapR package from the bupaR suite, which uses DiagrammeR and viz.js library to render process maps using GraphViz. ProcessanimateR adds a htmlwidget that uses SVG animations (SMIL) to create the animation. Sizes, colors, and the image used for tokens are customizable based on trace, event attributes, or a secondary data frame if an attribute does not change according to the original event log.
ProcessanimateR can be installed from CRAN:
You can also use the development or specific released version by using the remotes package. Note that the current development version may break without warning.
# install the remotes packagesource("")# use remotes to install the latest version of processanimateRremotes::install_github("fmannhardt/processanimateR")# or install a specific tagremotes::install_github("fmannhardt/[email protected]")
There are two main functions:
ianimate_process (interactive version).
We use the
patients event log provided by the
A basic animation with static color and token size:
Default token color, size, or image can be changed as follows:
animate_process(patients, token_size = 2)animate_process(patients, token_color = "red")animate_process(patients, token_image = "", token_size = 15)
Dynamic token colors or sizes based on event attributes can be configured.
library(RColorBrewer)animate_process(patients,animation_legend = "color", token_color = "employee",token_color_scale = "ordinal", token_color_scale_range = RColorBrewer::brewer.pal(8, "Paired"))
library(dplyr)animate_process(sample_n(traffic_fines,1000) %>% filter_trace_frequency(percentage = 0.95),animation_legend = "color", token_color = "amount",token_color_scale = "linear", token_color_scale_range = c("yellow","red"), animation_mode = "relative")
time scales (no legend yet):
animate_process(patients,animation_legend = "color", token_color = "time",token_color_scale = "time", token_color_scale_range = c("blue","red"))
It is also possible to use a secondary data frame to color the tokens irregardless of the event times. This can be useful if measurement are taken throughout a process, but the measurement event itself should not be included in the process map. For example, the lactic acid measurements of the
sepsis data could be used in that way:
# Extract only the lacticacid measurementslactic <- sepsis %>%mutate(lacticacid = as.numeric(lacticacid)) %>%filter_activity(c("LacticAcid")) %>%as.data.frame() %>%select("case" = case_id,"time" = timestamp,color = lacticacid) # format needs to be 'case,time,color'# Remove the measurement events from the sepsis logsepsisBase <- sepsis %>%filter_activity(c("LacticAcid", "CRP", "Leucocytes", "Return ER","IV Liquid", "IV Antibiotics"), reverse = T) %>%filter_trace_frequency(percentage = 0.95)# Animate with the secondary data frame `lactic`animate_process(sepsisBase, animation_mode = "relative", animation_duration = 600,animation_legend = "color", token_color = lactic,token_color_scale = "linear", token_color_scale_range = c("#fff5eb","#7f2704"))
This package makes use of the following libraries:
Felix Mannhardt (SINTEF Læring og beslutningsstøtte)
This software is licensed under the MIT License - see the LICENSE file for details
This software was partly developed in the HUMAN project, which has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement no. 723737 (HUMAN)