Draft

Dashboards

Notes
Modified

June 12, 2026

NoteLearning objectives
  • Define dashboards for data communication
  • Evaluate the effectiveness of dashboards for communicating data
  • Distinguish between client-side and server-side interactivity
  • Create and revise Quarto dashboards

What is a dashboard?

A dashboard is a visual display of data used to monitor conditions and/or facilitate understanding.1

Dashboards have several defining characteristics:

  • Collection of related data points — a dashboard is not a single chart but a coordinated set of views on related information
  • Single view — all components appear on one screen or page, allowing the reader to compare across panels without navigating away
  • Range of communication methods — charts, tables, value boxes (summary statistics), and explanatory text all have a role
  • Static or interactive — a static dashboard presents a fixed snapshot; an interactive dashboard lets the reader filter, drill down, or select subsets

The key design challenge is selecting which metrics and views belong together — too many panels overwhelm, too few leave readers without context.

Interactivity in dashboards

Dashboards can include two fundamentally different kinds of interactivity: client-side interactivity that runs in the browser, and server-side interactivity that requires a running R process.

Client-side interactivity

Client-side interactivity runs entirely in the browser. The complete dataset is loaded when the page loads, and all filtering, zooming, and hover behavior is handled by JavaScript without any server communication.

Dashboards with only client-side interactivity have several advantages and limitations. They can be published as a static webpage (GitHub Pages, Netlify, etc.) using any simple web hosting platform - no server is required after intial load. However, they are limited by what JavaScript can execute in the browser and cannot perform complex data manipulation or model fitting on the fly. Client-side dashboards work well with the {htmlwidgets} family of packages, such as {ggiraph}, {leaflet}, and interactive {gt} tables.

Server-side interactivity

Server-side interactivity requires a running R process. When the reader changes an input (selects a dropdown, adjusts a slider), the server re-executes R code and returns new output. This means the dashboard can perform any action that R can do — data manipulation, model fitting, file I/O — in response to user input. Server-side dashboards enable input controls like dropdowns, toggles, sliders, and search bars that dynamically regenerate charts and tables based on user selections.

The drawback is that server-side dashboards require a live server to host the R process, such as Posit Connect or a custom server. This adds complexity to deployment and maintenance compared to static dashboards.

Dashboards with Quarto

Quarto produces dashboards from .qmd files using format: dashboard. The layout is row- and column-based, defined through Markdown headings and optional attributes.

Dashboard components

A Quarto dashboard is composed of three nesting levels:

  1. Navigation bar and pages — The title, author, and optional navigation links between multiple pages are defined in YAML and at the top-level heading level (#). Multiple pages allow organizing a large dashboard into thematic sections.

  2. Sidebars, rows, columns, and tabsets — Content is arranged using second-level headings (##) for rows or columns. Attributes like {width=40%} and {height=300} control sizing. Sidebars hold input controls for interactive dashboards. Tabsets group related cards behind clickable tabs.

  3. Cards — Cards are the individual containers that hold plots, tables, value boxes, or free-form Markdown. Each code cell in a dashboard produces a card. A #| title: chunk option sets the card header.

Worked examples

Several live examples illustrate different dashboard patterns:

Why Quarto instead of Tableau or Power BI?

Tableau and Power BI are dominant in industry for dashboards, but they have significant constraints in a research or academic context:

  • Closed-source, proprietary — licenses are expensive and the software cannot be modified or extended
  • Point-and-click interface — limited to the chart types and transformations the tool exposes; complex data preparation is difficult
  • Limited customization — styling, unusual chart types, and reproducibility are all harder

Quarto dashboards use the same R code and {ggplot2} pipeline as every other part of your analysis. There is no separate tool to learn, no licensing cost, and no gap between how you explore data and how you present it.

Summary

  • A dashboard is a coordinated set of views on related data, displayed in a single screen and used to monitor conditions or facilitate understanding
  • Client-side interactivity (hover, filter) runs in the browser and can be deployed as a static page; server-side interactivity (reactive inputs, dynamic computation) requires a running R process
  • Quarto dashboards use format: dashboard and arrange content through Markdown headings (rows, columns, tabsets) and code cells (cards)
  • Quarto dashboards integrate cleanly with the rest of the R/{ggplot2} workflow, are free and open source, and can be published as static pages or extended with Shiny

Acknowledgements

Material derived in part from Advanced Data Visualization.