# CRAN packages
packages <- c(
"here", "readr", "readxl", "splitstackshape", "tidyr", "dplyr", "lubridate",
"stringr", "purrr", "ggplot2", "ggthemes", "RColorBrewer", "scales",
"dichromat", "colorspace", "viridis", "ggbeeswarm", "ggmap", "gridExtra",
"GGally", "ggpcp", "corrgram", "tourr", "gganimate", "maps","datasauRus",
"gapminder", "cranlogs", "shiny", "bslib", "DT", "leaflet", "plotly",
"htmltools", "broom", "broom.mixed", "lme4", "MASS", "forecast", "nullabor",
"ggdist", "bsicons", "ragg", "showtext", "thematic", "remotes", "quarto",
"bslib")
# Install packages and their dependencies
to_install <- setdiff(packages, installed.packages())
install.packages(to_install, dep=TRUE, repos = "https://cloud.r-project.org/")
# Install some packages from GitHub
# If you can't install these,
# it won't affect your ability to participate
remotes::install_github("wmurphyrd/fiftystater")
remotes::install_github("heike/vinference")
remotes::install_github("rstudio/bslib")
remotes::install_github("rlbarter/superheat")
# For sharing web apps,
# but you need administrator rights to your computer:
install.packages("rsconnect")SISBID 2026 Module 2: Data Visualization
Instructors: Di Cook, Heike Hofmann and Susan Vanderplas
Website: https://dicook.github.io/SISBID/
Module description
We will present general-purpose techniques for visualizing a variety of data, as well as specific techniques for visualizing common types of biological data sets. Some strategies for working with large data will be provided. Understanding data involves an iterative cycle of visualization and modeling. We will illustrate this with several examples during the workshop.
The first segment of this module will focus on structured development of graphics using static graphics. This will use the ggplot2 package in R. It enables building plots using grammatically defined elements, and producing templates for use with multiple data sets. We will include some these principles for working with biological and genomic data.
The second segment will focus on interactive graphics for rapid exploration. We will also demonstrate interactive techniques for high-performance local display, and for easily creating interactive web graphics. In addition, we will explain how to create simple web GUIs for managing interactive analysis tools for data using shiny.
We will use a hands-on teaching methodology that combines short lectures with longer practice sessions. As students learn about new techniques, they will also be able to put them into practice and receive feedback from experts.
Module assumes some familiarity with R. We will teach using R and Rstudio.
Recommended Reading:
Course Logistics
We use zoom for lectures. All sessions will be recorded and made available.
Communication with the instructors should be in Zoom or on the slack channel.
Zoom etiquette:
- mute yourself when not talking,
- don’t share the link.
Course Schedule
| Monday | US Pacific | US Central | US Eastern | Accra | London | Korea | Melbourne |
|---|---|---|---|---|---|---|---|
| Meet & Greet | 7:45 - 8:00 am | 9:45 - 10:00 am | 10:45 - 11:00 am | 2:45 - 3:00 pm | 3:45 - 4:00 pm | 11:45 am - 12:00 pm | 12:45 - 1:00 am |
| Lecture 1 | 8:00 - 8:45 am | 10:00 - 10:45 am | 11:00 - 11:45 am | 3:00 - 3:45 pm | 4:00 - 4:45 pm | 12:00 - 12:45 am | 1:00 - 1:45 am |
| Lecture 2 | 9:00 - 9:45 am | 11:00 - 11:45 am | 12:00 - 12:45 pm | 4:00 - 4:45 pm | 5:00 - 5:45 pm | 1:00 - 1:45 am | 2:00 - 2:45 am |
| Lecture 3 | 10:00 - 10:45 am | 12:00 - 12:45 pm | 1:00 - 1:45 pm | 5:00 - 5:45 pm | 6:00 - 6:45 pm | 2:00 - 2:45 am | 3:00 - 3:45 am |
| Break | |||||||
| Lecture 4 | 11:45 - 12:30 | 1:45 - 2:30 pm | 2:45 - 3:30 pm | 6:45 - 7:30 pm | 7:45 - 8:30 pm | 3:45 - 4:30 am | 4:45 - 5:30 pm |
| Lecture 5 | 12:45 - 1:30 pm | 2:45 - 3:30 pm | 3:45 - 4:30 pm | 7:45 - 8:30 pm | 8:45 - 9:30 pm | 4:45 - 5:30 am | 5:45 - 6:30 am |
| Lecture 6 | 1:45 - 2:30 pm | 3:45 - 4:30 pm | 4:45 - 5:30 pm | 8:45 - 9:30 pm | 9:45 - 10:30 pm | 5:45 - 6:30 am | 6:45 - 7:30 am |
| Tuesday | US Pacific | US Central | US Eastern | Accra | London | Korea | Melbourne |
|---|---|---|---|---|---|---|---|
| Lecture 7 | 8:00 - 8:45 am | 10:00 - 10:45 am | 11:00 - 11:45 am | 3:00 - 3:45 pm | 4:00 - 4:45 pm | 12:00 - 12:45 am | 1:00 - 1:45 am |
| Lecture 8 | 9:00 - 9:45 am | 11:00 - 11:45 am | 12:00 - 12:45 pm | 4:00 - 4:45 pm | 5:00 - 5:45 pm | 1:00 - 1:45 am | 2:00 - 2:45 am |
| Lecture 9 | 10:00 - 10:45 am | 12:00 - 12:45 pm | 1:00 - 1:45 pm | 5:00 - 5:45 pm | 6:00 - 6:45 pm | 2:00 - 2:45 am | 3:00 - 3:45 am |
| Break | |||||||
| Lecture 10 | 11:45 - 12:30 | 1:45 - 2:30 pm | 2:45 - 3:30 pm | 6:45 - 7:30 pm | 7:45 - 8:30 pm | 3:45 - 4:30 am | 4:45 - 5:30 pm |
| Lecture 11 | 12:45 - 1:30 pm | 2:45 - 3:30 pm | 3:45 - 4:30 pm | 7:45 - 8:30 pm | 8:45 - 9:30 pm | 4:45 - 5:30 am | 5:45 - 6:30 am |
| Lecture 12 | 1:45 - 2:30 pm | 3:45 - 4:30 pm | 4:45 - 5:30 pm | 8:45 - 9:30 pm | 9:45 - 10:30 pm | 5:45 - 6:30 am | 6:45 - 7:30 am |
| Wednesday | US Pacific | US Central | US Eastern | Accra | London | Korea | Melbourne |
|---|---|---|---|---|---|---|---|
| Lecture 13 | 8:00 - 8:45 am | 10:00 - 10:45 am | 11:00 - 11:45 am | 3:00 - 3:45 pm | 4:00 - 4:45 pm | 12:00 - 12:45 am | 1:00 - 1:45 am |
| Lecture 14 | 9:00 - 9:45 am | 11:00 - 11:45 am | 12:00 - 12:45 pm | 4:00 - 4:45 pm | 5:00 - 5:45 pm | 1:00 - 1:45 am | 2:00 - 2:45 am |
| Lecture 15 / Show and Tell | 10:00 - 10:45 am | 12:00 - 12:45 pm | 1:00 - 1:45 pm | 5:00 - 5:45 pm | 6:00 - 6:45 pm | 2:00 - 2:45 am | 3:00 - 3:45 am |
Course outline
Slack
Find us on slack: SISBID.slack.com. The channel data-visualization-2026 will contain zoom and (later) video links for the sessions.
Monday
| Title | Slides | 1pg Slides | Code | Instructor |
|---|---|---|---|---|
| 0. Setting things up | Slides | 1pg | Code | All |
| 1. The grammar of graphics and ggplot2 | Slides | 1pg | Code | Heike |
| 2. Visual perception and effective plot construction | Slides | 1pg | Code | Susan |
| 3. Tidy data and tidying messy data with tidyr | Slides | 1pg | Code | Heike |
| Break | ||||
| 4. Reshaping Data for Plotting and Display | Slides | 1pg | Code | Susan |
| 5. Wrangling data and models | Slides | 1pg | Code | Heike |
| 6. Advancing the grammar to maps, time and interactivity | Slides | 1pg | Code | Di |
Tuesday
Day 2 zip file
Note: this zip file assumes you will extract to the same folder as yesterday – data files have not been included twice.
| Title | Slides | 1pg Slides | Code | Instructor |
|---|---|---|---|---|
| 7. Interactive and animated graphics using plotly and gganimate | Slides | 1pg | Code | Heike |
| 8. How to build a shiny app | Slides | 1pg | Code | Heike |
| 9. Reactive elements in shiny | Slides | 1pg | Code | Susan |
| Break | ||||
| 10. Multivariate plots using ggplot2, GGally | Slides | 1pg | Code | Di |
| 11. Touring on multivariate data | Slides | 1pg | Code | Di |
| 12. Advanced graphics and statistical inference | Slides | 1pg | Code | Di |
Wednesday
Day 3 zip file
Note: this zip file assumes you will extract to the same folder as Monday – data files have not been included twice.
| Title | Slides | 1pg Slides | Code | Instructor |
|---|---|---|---|---|
| 13. Theme a shiny app | Slides | 1pg | Code | Susan |
| 14. Build your own Shiny app | Slides | 1pg | Code | Heike |
| Show us What You’ve Made | All | |||
| 15. Interactive Documents | Slides | 1pg | Code | Susan |
Software list
Download RStudio, and latest R version.
Open RStudio, and run the code below to install these packages and their dependencies:
Note: You can install all of the tidyverse of packages - tidyr, dplyr, readr, ggplot2, tibble, purrr, forcats, stringr - with install.packages("tidyverse"). But some operating systems seem to run into difficulties doing this, so installing just a subset is easier.
If you want to compile the slides - you really don’t want to do this, but if you do - you will need these additional packages:
install.packages("remotes")
remotes::install_github("hadley/emo")
remotes::install_github("mitchelloharawild/icons")
remotes::install_github("emitanaka/anicon")
remotes::install_github("dicook/gretchenalbrecht")
remotes::install_github("gadenbuie/countdown", subdir = "r")
install.packages("xaringanExtra")