Learn R Programming

diegr

Overview

The name diegr comes from Dynamic and Interactive EEG Graphics using R. The diegr package enables researchers to visualize high-density electroencephalography (HD-EEG) data with animated and interactive graphics, supporting both exploratory and confirmatory analyses of sensor-level brain signals.

The package diegr includes:

  • interactive boxplots (boxplot_epoch, boxplot_subject, boxplot_rt)
  • interactive waveforms (interactive_waveforms)
  • topographic maps in 2D (topo_plot)
  • scalp plots in 3D (scalp_plot)
  • functions for computing summary statistics, baseline correction, pointwise and jackknife mean (summary_stats_rt,baseline_correction, compute_mean)
  • functions for easy selection of subdata or region of interest (pick_data, pick_region)
  • functions for plotting the mean with pointwise confidence interval (plot_time_mean, plot_topo_mean)
  • animations of time course of the raw signal or the average in 2D and 3D (animate_topo, animate_topo_mean, animate_scalp)

Installation

You can install the current version of diegr from CRAN with:

install.packages("diegr")

or the latest development version from GitHub with:

# install.packages("devtools")
devtools::install_github("gerslovaz/diegr") 

Data

Because of large volumes of data obtained from HD-EEG measurements, the package allows users to work directly with database tables (in addition to common formats such as data frames or tibbles). Such a procedure is more efficient in terms of memory usage.

The database you want to use as input to diegr functions must contain columns with the following structure:

  • group - ID of groups,
  • subject - ID of subjects,
  • sensor - sensor labels,
  • epoch - epoch numbers,
  • condition - labels of experimental condition,
  • time - numbers of time points (as sampling points, not in ms),
  • signal - the EEG signal amplitude in microvolts (in most functions it is possible to set the name of the column containing the amplitude arbitrarily).

Note: It is not necessary for the data to contain all variables, but if it does, they must be named according to the structure presented above.

The package contains some included training datasets:

  • epochdata: epoched HD-EEG data (anonymized short slice from big HD-EEG study presented in Madetko-Alster, 2025) for 2 subjects and 204 selected sensors in 50 time points,
  • HCGSN256: a list with Cartesian coordinates of HD-EEG sensor positions in 3D space on the scalp surface and their projection into 2D space
  • rtdata: response times (time between stimulus presentation and pressing the button) from the experiment involving a simple visual motor task (anonymized short slice from big HD-EEG study presented in Madetko-Alster, 2025).

For more information about the structure of built-in data see the package vignette vignette("diegr", package = "diegr").

Quick examples

Interactive boxplot

This is a basic example which shows how to plot interactive epoch boxplots from chosen electrode in different time points for one subject:

library(diegr)
data("epochdata")
epochdata |>
  pick_data(subject_rg = 1, sensor_rg = "E65") |>
boxplot_epoch(amplitude = "signal", time_lim = c(10:20))

Note: The README format does not allow the inclusion of plotly interactive elements, only the static preview of the result is shown.

Topographic map

data("HCGSN256")
# creating a mesh
M1 <- point_mesh(dimension = 2, n = 30000, type = "polygon", sensor_select = unique(epochdata$sensor))
# filtering a subset of data to display 
data_short <- epochdata |>
  pick_data(subject_rg = 1, time_rg = 15, epoch_rg = 10)
# or you can use dplyr::filter()
# dplyr::filter(subject == 1 & epoch == 10 & time == 15) 
# function for displaying a topographic map of the chosen signal on the created mesh M1
topo_plot(data_short, amplitude = "signal", mesh = M1)

Computing and displaying the average in time domain

Compute the average signal for subject 2 from the channels E65 and E34 (exclude the oulier epochs 14 and 15) and then display it along with CI bounds (use plot_time_mean conditioned by sensor)

# extract required data
edata <- epochdata |>
  pick_data(subject_rg = 2, sensor_rg = c("E34", "E65"), epoch_rg = 1:13)
# baseline correction
data_base <- baseline_correction(edata, baseline_range = 1:10)
# compute average
data_mean <- data_base |> 
  compute_mean(amplitude = "signal_base", type = "point", domain = "time")
# plot the average line with CI
plot_time_mean(data = data_mean, t0 = 10, condition_column = "sensor", legend_title = "Sensor")

For detailed examples and usage explanation, please see the package vignette: vignette("diegr", package = "diegr").

References Madetko-Alster N., Alster P., Lamoš M., Šmahovská L., Boušek T., Rektor I. and Bočková M. The role of the somatosensory cortex in self-paced movement impairment in Parkinson’s disease. Clinical Neurophysiology. 2025, vol. 171, 11-17. https://doi.org/10.1016/j.clinph.2025.01.001

License This package is distributed under the MIT license. See LICENSE file for details.

Citation Use citation("diegr") to cite this package.

Copy Link

Version

Install

install.packages('diegr')

Monthly Downloads

255

Version

0.2.0

License

MIT + file LICENSE

Maintainer

Zdeňka Geršlová

Last Published

January 24th, 2026

Functions in diegr (0.2.0)

rtdata

Example response time data
summary_stats_rt

Compute summary statistics of reaction times
scalp_plot

Plot scalp map of EEG signal
outliers_epoch

Select outlier epochs
topo_plot

Plot topographic map of EEG signal
animate_topo

Topographic map animation in time
baseline_correction

Baseline correction
animate_scalp

3D scalp plot animation in time
boxplot_rt

Plot interactive boxplots of response times
HCGSN256

Coordinates of 256-channel HCGSN sensors
compute_mean

Calculate mean in temporal or spatial domain
animate_topo_mean

Animate EEG average topographic map with confidence bounds
boxplot_epoch

Plot interactive boxplots of EEG amplitude on epoch level
create_scale

Create colour scale used in topographic figures
boxplot_subject

Plot interactive boxplots of EEG amplitude across subjects
plot_topo_mean

Plot topographic map of average EEG signal
make_triangulation

Make triangulation of 2D point mesh
interactive_waveforms

Plot interactive waveform graph
plot_time_mean

Plot time curve of average EEG signal with confidence interval
pick_data

Subsets EEG data by group, subject, sensor, time, experimental condition or epoch
plot_point_mesh

Plot point mesh
pick_region

Choose region of interest
point_mesh

Create regular mesh of points
epochdata

Example high-density (HD-EEG) epoched data