9  Interaktywność

Interaktywność jest dobra, gdy użytkownik ma eksplorować szczegóły. Nie powinna ratować wykresu, który w wersji statycznej nie ma jasnego pytania.

library(tidyverse)
library(here)
library(plotly)
library(DT)

source(here("R", "theme_course.R"))
theme_set(theme_course())

9.1 Interaktywny wykres w Plotly (ggplotly)

nba_interactive <- readr::read_csv(here("datasets", "nba.csv"), show_col_types = FALSE) |>
  mutate(
    conference = recode(conference, East = "Wschód", West = "Zachód"),
    tooltip = paste0(
      player,
      "<br>Drużyna: ", team,
      "<br>Punkty: ", points,
      "<br>Asysty: ", assists,
      "<br>Zbiórki: ", rebounds
    )
  )

p_interactive <- nba_interactive |>
  ggplot(aes(x = assists, y = points, colour = conference, text = tooltip)) +
  geom_point(alpha = 0.75, size = 2.4) +
  scale_colour_course_d(name = "Konferencja") +
  labs(
    title = "Interaktywny wykres pozwala sprawdzić szczegóły punktów",
    x = "Asysty",
    y = "Punkty"
  )

plotly::ggplotly(p_interactive, tooltip = "text")

9.2 Interaktywna tabela jako uzupełnienie

nba_interactive |>
  transmute(
    Zawodnik = player,
    Drużyna = team,
    Konferencja = conference,
    Punkty = points,
    Asysty = assists,
    Zbiórki = rebounds,
    Przechwyty = steals,
    Bloki = blocks
  ) |>
  arrange(desc(Punkty)) |>
  DT::datatable(
    rownames = FALSE,
    options = list(
      pageLength = 8,
      scrollX = TRUE,
      language = list(
        search = "Szukaj:",
        lengthMenu = "Pokaż _MENU_ wierszy",
        info = "Wiersze _START_-_END_ z _TOTAL_",
        infoEmpty = "Brak wierszy",
        zeroRecords = "Brak pasujących wyników",
        paginate = list(previous = "Poprzednia", `next` = "Następna")
      )
    )
  )

9.3 Kiedy nie używać interakcji

  • Gdy wykres ma trafić do slajdu albo PDF bez obsługi HTML.
  • Gdy podpowiedź po najechaniu (tooltip) ukrywa informację, która powinna być widoczna od razu.
  • Gdy liczba punktów jest tak duża, że przeglądarka zaczyna spowalniać.
  • Gdy odbiorca potrzebuje decyzji, a nie eksploracji.

9.4 Zadanie

Przerób jeden statyczny wykres z materiału na plotly::ggplotly(). Dodaj własną podpowiedź po najechaniu (tooltip) i usuń z niej niepotrzebne pola.