maidr
Overview
maidr (Multimodal Access and Interactive Data Representation) makes data visualizations accessible to users with visual impairments. It converts ggplot2 and Base R plots into interactive, accessible HTML/SVG formats with keyboard navigation, screen reader support, and sonification.
The package provides two main functions:
show()displays an interactive accessible plot in RStudio Viewer or browsersave_html()exports a plot as a standalone HTML file
Installation
# Install from CRAN (coming soon)
install.packages("maidr")
# Or install development version from GitHub
pak::pak("xability/r-maidr")
# Alternative: using pacman (auto-installs if missing)
pacman::p_load_gh("xability/r-maidr")Usage
ggplot2
library(maidr)
library(ggplot2)
p <- ggplot(mpg, aes(x = class)) +
geom_bar(fill = "steelblue") +
labs(title = "Vehicle Classes", x = "Class", y = "Count")
# Display interactive accessible plot
show(p)
# Or save to file
save_html(p, "vehicle_classes.html")Base R
library(maidr)
# Create plot first
barplot(
table(mtcars$cyl),
main = "Cars by Cylinder Count",
xlab = "Cylinders",
ylab = "Count"
)
# Then call show() without arguments
show()Supported plot types
maidr supports a wide range of visualization types in both ggplot2 and Base R:
Basic Plot Types
| Plot Type | ggplot2 | Base R |
|---|---|---|
| Bar charts | geom_bar(), geom_col() | barplot() |
| Grouped/Dodged bars | position = "dodge" | beside = TRUE |
| Stacked bars | position = "stack" | beside = FALSE |
| Histograms | geom_histogram() | hist() |
| Scatter plots | geom_point() | plot() |
| Line plots | geom_line() | plot(type = "l"), lines() |
| Box plots | geom_boxplot() | boxplot() |
| Heatmaps | geom_tile() | image() |
| Density/Smooth | geom_smooth(), geom_density() | lines(density()) |
Advanced Plot Types
| Plot Type | ggplot2 | Base R |
|---|---|---|
| Faceted plots | facet_wrap(), facet_grid() | par(mfrow/mfcol) + loops |
| Multi-panel layouts | patchwork package | par(mfrow), par(mfcol) |
| Multi-layered plots | Multiple geom_* layers | Sequential plot calls |
See vignette("plot-types") for detailed examples of each plot type.
Accessibility features
- Keyboard navigation - explore data points using arrow keys
- Screen reader support - full ARIA labels and live announcements
- Sonification - hear data patterns through sound
- Text descriptions - automatic statistical summaries
Getting help
- Report bugs or request features at GitHub Issues
- Read the documentation at the package website
Learning more
vignette("getting-started", package = "maidr")for an introductionvignette("plot-types", package = "maidr")for supported visualizationsvignette("shiny-integration", package = "maidr")for Shiny apps