tslabeler - 2020 Shiny Contest Submission


Authors: Rahul Sangole
Working with Shiny < 1 year

Abstract: Labeling time series data is a typical preprocessing step for developing time series forecasting, classification or anomaly detection models. This Shiny app allows you to label very large quantities of time series data interactively, yet quickly.

Full Description:

Visually inspecting a large set of time series data and then labeling outliers, anomalies, trend changes, level shifts is a painstakingly time-consuming process. Yet, this is such a crucial step to all real-world time-series forecasting modeling work. Also, for real-world anomaly detection problems, one of the biggest - and most common - challenge is having unlabeled datasets. Visual inspection can often quickly highlight anomalies, but again, creating labels via code is painful and slow.

My tslabeler package hopes to solve this problem - it offers an interactive way to select and tag points. Plots are snappy since I've stuck to using base::plot. It's easy to brush points in both a box mode or y-axis mode and quickly switch between the two modes - just double click. I've offered some pre-programmed tags commonly used in these analyses, but you can create your own tags as well.

In my next release, I'll add support for the tsibble object as well.


  • All internal data operations are done using data.table which keeps manipulations extremely speedy
  • Interactive plotting done using base::plot and shiny, again, to keep things responsive
  • Inputs can be a data.table|frame or CSV with a date/date-time column, atleast one value column, and an optional grouping variable. Tsibble planned for the next version.
  • Ready-to-use tags with the option of creating your own tags
  • Quick interactivity to peek into the data using the zoomed time-series view and table
  • Points can be selected using a box brush or a y-brush… just double-click

Category: Other
Keywords: labeling-tool, anomaly, labeler, time-series-tool
Shiny app: https://rsangole.shinyapps.io/tslabeler/
Repo: https://github.com/rsangole/tslabeler
RStudio Cloud: https://rstudio.cloud/project/1105161


Full image: