Skip to content

earowang/tsibbletalk

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
R
 
 
 
 
 
 
 
 
man
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

tsibbletalk

R build status

A tsibble consists of index, key, and other measured variables. The key identifies series/panels of interests, which often remain the same during the exploration loop. Understanding multi-faceted data requires an ensemble of graphics, and linked brushing via key will accelerate the exploratory data visualisation process. The {tsibbletalk} package introduces shared key to the tsibble, to easily {crosstalk} between plots on both client and server sides (i.e. with or without shiny).

Installation

You can install the development version of tsibbletalk from GitHub with:

# install.packages("remotes")
remotes::install_github("earowang/tsibbletalk")

Get started

Linking views via shared tsibble

The as_shared_tsibble() turns a tsibble object to a shared tsibble. If there’s any nesting/hierarchical structure in the key variables, the spec argument should be supplied for the structural specification. For example, the structure in the tourism data contains the geographical hierarchy, State nesting (/) lower-level Regions, and each location crossed (*) with the trip Purpose. The plotly_key_tree() visualises the tree structure specified in the spec, which is helpful in navigating interested series for later.

library(tsibble)
library(tsibbletalk)
tourism_shared <- tourism %>%
  as_shared_tsibble(spec = (State / Region) * Purpose)
p0 <- plotly_key_tree(tourism_shared, height = 900, width = 600)

Multiple displays are constructed: (1) the overall tree plot in the left panel, (2) the time series plot in the top right, and (3) the scatterplot representing featured metrics for each series, produced by the features(). All known functions here, but (yes) generate linking views.

library(feasts)
tourism_feat <- tourism_shared %>%
  features(Trips, feat_stl)

library(ggplot2)
p1 <- tourism_shared %>%
  ggplot(aes(x = Quarter, y = Trips)) +
  geom_line(aes(group = Region), alpha = 0.5) +
  facet_wrap(~ Purpose, scales = "free_y")
p2 <- tourism_feat %>%
  ggplot(aes(x = trend_strength, y = seasonal_strength_year)) +
  geom_point(aes(group = Region))

library(plotly)
subplot(p0,
  subplot(
    ggplotly(p1, tooltip = "Region", width = 900),
    ggplotly(p2, tooltip = "Region", width = 900),
    nrows = 2),
  widths = c(.4, .6)) %>%
  highlight(dynamic = TRUE)

Slicing and dicing on server-side

The key carries nested and crossed embedding, and the index provides temporal information. Slicing and dicing time index can help to build richer profiles for each series. A shiny module, a pair of UI and server functions, is provided to interactively slice and dice a tsibble. This allows to quickly locate an interesting slice in time.

p <- fill_gaps(pedestrian) %>%
  filter_index(~ "2015") %>% 
  ggplot(aes(x = Date_Time, y = Count, colour = Sensor)) +
  geom_line(size = .2) +
  facet_wrap(~ Sensor, scales = "free_y") +
  theme(legend.position = "none")

library(shiny)
ui <- fluidPage(tsibbleWrapUI("tswrap"))
server <- function(input, output, session) {
  tsibbleWrapServer("tswrap", p, period = "1 day")
}
shinyApp(ui, server)

About

Crosstalk between tsibble objects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published