Making shinier charts

Intermediate Interactive Data Visualization with plotly in R

Adam Loy

Statistician, Carleton College

Apps without shiny

bscols-example.gif

Intermediate Interactive Data Visualization with plotly in R

bscols() for column layouts

library(plotly)
library(crosstalk)
shared_data <- world2014 %>% SharedData$new()

p1 <- shared_data %>% plot_ly(x=~income, y = ~co2, color = ~four_regions) %>% add_markers() %>% layout(xaxis = list(type = "log"), yaxis = list(type = "log")) p2 <- shared_data %>% plot_ly(x=~income, y = ~life_expectancy, color = ~four_regions) %>% add_markers() %>% layout(xaxis = list(type = "log")))
bscols(p1, p2)
Intermediate Interactive Data Visualization with plotly in R

bscols() for column layouts

bscols_step1.gif

Intermediate Interactive Data Visualization with plotly in R

Adding filters: Checkboxes

bscols_checkbox.gif

bscols(filter_checkbox(id = "four_regions", label = "Region", 
                       sharedData = shared_data, group = ~four_regions),
       p1)
Intermediate Interactive Data Visualization with plotly in R

Adding filters: Select box

bscols_selectbox.gif

bscols(filter_select(id = "four_regions", label = "Region", 
                sharedData = shared_data, group = ~four_regions),
       p1)
Intermediate Interactive Data Visualization with plotly in R

Adding filters: Sliders

bscols_slider.gif

bscols(filter_slider(id = "co2", label = "CO2 concentrations", 
                     sharedData = shared_data, column = ~co2),
       p1)
Intermediate Interactive Data Visualization with plotly in R

Fixing the range of your axes

bscols_fixed_range.gif

bscols(filter_slider(id = "co2", label = "CO2 concentrations", 
                     sharedData = shared_data, column = ~co2),
        p1 %>% layout(xaxis = list(range = c(2.5, 5)), 
                      yaxis = list(range = c(-1.4, 1.55)))
)
Intermediate Interactive Data Visualization with plotly in R

Putting the pieces together

bscols(widths = c(2, 5, 5),
  list(
    filter_checkbox(
      id = "four_regions", label = "Region", 
      sharedData = shared_data, group = ~four_regions
    ),
    filter_slider(
      id = "co2", label = "CO2 concentrations", 
      sharedData = shared_data, column = ~co2
    )
  ),
  p1,
  p2
)
Intermediate Interactive Data Visualization with plotly in R

Putting the pieces together

bscols_result_static.png

Intermediate Interactive Data Visualization with plotly in R

Let's practice!

Intermediate Interactive Data Visualization with plotly in R

Preparing Video For Download...