ggWizard
Create beautiful ggplot2 charts -- no R code required.
ggWizard is a six-step Shiny wizard that lets anyone import a CSV or Excel file, preview and clean the data, configure a publication-ready ggplot2 chart, and export the plot together with a reproducible R script and run log -- all without writing a single line of code.

Features
Import
- CSV, XLSX, and XLS support
- Multi-sheet Excel detection with sheet picker
- Auto-detection of column types (numeric, date, factor, character, logical)
Preview
- Summary metric tiles: row count, column count, numeric columns, date columns, missing percentage
- Scrollable column browser with type badges and sample values
- Full data preview table (first 2,000 rows, sortable and searchable)
Filter and QC (optional -- skip to go straight to plotting)
- Column exclusion: deselect any columns you do not need downstream
- Outlier detection by Z-score: select which numeric columns to scan, set an SD threshold (default 3), flag rows where any selected column exceeds it, then choose to remove or keep them
- Replicate variance QC: select a grouping column and a measurement column, compute CV (SD / mean x 100%) within each group, flag groups above a threshold, and optionally remove them
- Before/after dimensions summary showing rows and columns removed
- Download the filtered dataset as a CSV (Excel-compatible)
- Reset button to undo all filters and restore the original data
Configure plot
- Eight plot types: Bar, Line, Time Series, Scatter, Histogram, Box, Violin, Area
- Dynamic variable mapping (X, Y, Group/Color, Facet)
- Bar chart stat options: count or sum
- Toggle between static (ggplot2) and interactive (plotly) output
- Live preview that updates as you make changes
Customise appearance
- Toggle-then-reveal label controls for plot title, subtitle, X and Y axis titles, and caption
- Proportional font size templates: Small, Medium, Large, Extra Large
- Safe cross-platform font faces: Arial, Helvetica, Calibri, Times New Roman, Georgia, Courier New, Palatino
- Five base themes: Minimal, Classic, Dark, Light, Void
- Seven-color palette presets plus Viridis and ColorBrewer options
- Separate major and minor gridline toggles, axis line toggle
- X-axis label angle (horizontal, 45 degrees, vertical)
- Y-axis range (min/max) and break interval; X-axis range for continuous axes
- Plot margins (Top, Right, Bottom, Left in points)
- Box plot options: outlier points, median line, mean diamond overlay
- Plot-type-specific geometry controls (line width, point size/shape, bar width, histogram bins)
- Legend position and title override
Export
- Save to a timestamped output folder (
ggwizard_YYYYMMDD_HHMMSS/)
- Format options: PNG, PDF, SVG, JPEG (multi-select)
- DPI presets: Low (150), Medium (300), High (600)
- Configurable width and height in inches
- Optional extras: R script, run log, interactive HTML (plotly)
- Fullscreen preview button on the Final plot card
- Individual download buttons for plot, script, and log without saving to disk
- Resume button in the top bar to return to your last wizard step after visiting Help or About
Installation
ggWizard is not on CRAN. Install it directly from GitHub using one of the options below.
Option 1 -- pak (recommended)
pak::pak("ebenogoe/ggwizard")
Option 2 -- remotes
remotes::install_github("ebenogoe/ggwizard")
Option 3 -- R-universe
install.packages("ggwizard",
repos = "https://ebenogoe.r-universe.dev"
)
Quick start
library(ggwizard)
run_app()
The app opens in your default browser. Click Get Started on the welcome screen to begin.
Sample data
A sample Excel file is bundled with the package for testing:
system.file("extdata", "lincoln_bacteria_monitoring.xlsx", package = "ggwizard")
It contains three sheets of bacterial monitoring data (simulated) from eight sites in Lincoln, Nebraska (268 sampling events, 18 variables including E. coli, Total Coliform, Enterococcus, water quality parameters, and site metadata).
Dependencies
| Package |
Role |
| shiny, bslib |
App framework and Bootstrap 5 theming |
| golem |
Package infrastructure |
| ggplot2 |
Plot rendering |
| plotly |
Interactive plot output |
| readxl, readr |
File import (Excel and CSV) |
| DT |
Scrollable data preview and QC result tables |
| shinyWidgets |
Toggle buttons, radio buttons, material switches, picker inputs |
| shinyFiles |
Output folder picker |
| shinybusy |
Modal spinners |
| shinyjs |
Toggle-then-reveal controls, fullscreen trigger |
| fontawesome |
Icons throughout the UI |
| bsicons |
Additional Bootstrap icons |
| htmlwidgets |
Interactive HTML export (plotly widget) |
| fs |
File system operations |
| rlang |
Programmatic plot construction |
| stats, utils |
Z-score and CV computation, CSV download |
License
MIT. See LICENSE for details.
Built with golem and ggplot2. Created by Ebenezer Ogoe.