Centre for Multi-Dimensional Data Visualisation (MuViSU),
University of the Witwatersrand,
Stellenbosch University
IFCS 2026 | 19th Conference of the International Federation of Classification Societies
Milan, Italy
14-16 July 2026
raeesa.ganey@wits.ac.za & nienkemperj@sun.ac.zaMuViSU Centre for Multi-Dimensional Data Visualisation - develops multivariate visualisation theory, applies it across scientific domains, and ships it as open R software.
moveEZ - pronounced move easy
An R package for animated biplots.
Ganey R & Nienkemper-Swanepoel J (2025). moveEZ: Animated Biplots. R package version 1.2.0, https://CRAN.R-project.org/package=moveEZ.
Multivariate data are everywhere but the structure of those data rarely stands still.
moveEZ turns the biplot from a static snapshot into a temporal / sequential narrative - smooth animated transitions of how observation coordinates and axis orientations shift from one level to the next.
Fifth-generation ECMWF atmospheric reanalysis (ERA5), via the Copernicus Climate Data Store.
| Variable | Description |
|---|---|
summer_temp |
Hottest month temperature (°C) |
winter_temp |
Coldest month temperature (°C) |
total_precip |
Annual total precipitation (mm) |
ssr_total |
Annual total solar radiation (J/m²) |
wind_mean |
Mean annual wind speed (m/s) |
PCA projects high-dimensional data onto a lower-dimensional plane:
This dual display lets us read, simultaneously:
But this is a single snapshot. Let the controlled factor be time and the points and axes begin to move. Capturing that movement is exactly what moveEZ is built to do.
moveEZ FrameworksThe data are sliced by the time variable - one biplot per level and the slices are fed through the moveEZ framework, which animates the transition from one to the next.
moveEZ provides three functions of increasing methodological complexity:
moveplot()moveplot2()moveplot3()moveplot2() with automated alignment via Generalised Procrustes Analysis.moveplot() - movements across timeSlice the biplot by year then animate the transitions.
moveplot() - from regimes to citiesThe same function, regrouped - with a hand picked set of cities.
moveplot2() - a biplot per regime, alignedSet time.var = "regime" to one biplot per regime, aligned so they read side by side.
moveplot3() - movement toward a targetAnimate each regime’s cities across the years towards a target, then quantify the change with fit- and bias-based measures.
Construction: Separate biplots are constructed for each time slice of the data, time.var = "year". The biplots are then aligned according to a specific target:
target = 1950)Alignment: Generalised orthogonal Procrustes Analysis (GPA) is used to transform each biplot to the target, allowing for translation, scaling, rotation, and reflection. This produces an aligned animation that exposes subtle temporal changes in climate structure.
Evaluation: Goodness-of-fit measures (RMSB, AMB, bias) quantify how closely each year’s climate aligns with the target structure, revealing periods when Mediterranean conditions depart from or return to the baseline reference frame.
moveplot3() - aligned with 1950Climate data is multivariate and non-stationary: not just rising means, but shifting relationships among variables, changing seasonality, and regional trajectories that diverge from one another.
raeesa.ganey@wits.ac.za & nienkemperj@sun.ac.za
Available on CRAN: https://CRAN.R-project.org/package=moveEZ
Vignette at https://muvisu.github.io/moveEZ/articles/moveEZ.html.