From 38353f54027a60455ad50f0ce4b3035b2d57f050 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Wed, 8 Nov 2023 22:29:03 +0000 Subject: [PATCH] build based on 15d0acd --- dev/.documenter-siteinfo.json | 2 +- dev/api/index.html | 16 ++++++++-------- dev/helper/index.html | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index bae18278b..3f5bf2728 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-11-08T22:28:02","documenter_version":"1.1.2"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-11-08T22:28:57","documenter_version":"1.1.2"}} \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index 953c8f065..d67418885 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -1,11 +1,11 @@ -API · UnfoldMakie.jl
UnfoldMakie.df_timebinMethod

function dftimebin(df, Δbin; coly=:erp, fun=mean, grouping=[]) Split or combine dataframe according to equally spaced time bins

  • df AbstractTable with columns :time and col_y (default :erp), and all columns in grouping;
  • Δbin bin size in :time units;
  • col_y default :erp, the column to combine over (with fun);
  • fun function to combine, default is mean;
  • grouping (vector of symbols/strings) default empty vector, columns to group the data by before aggregating. Values of nothing are ignored.
source
UnfoldMakie.eeg_topoplot_seriesMethod

function eegtopoplotseries(data::DataFrame, Δbin; y=:estimate, label=:label, col=:time, row=nothing, figure = NamedTuple(), combinefun=mean, rowlabels = false, collabels = false, topoplot_attributes... )

Plot a series of topoplots. The function automatically takes the combinefun=mean over the :time column of data in Δbin steps.

  • The data frame data needs the columns :time and y(=:erp), and label(=:label). If data is a matrix, it is automatically cast to a dataframe, time bins are in samples, labels are string.(1:size(data,1)).
  • Δbin in :time units, specifying the time steps. All other keyword arguments are passed to the EEG_TopoPlot recipe. In most cases, the user should specify the electrode positions with positions=pos.
  • The col and row arguments specify the field to be divided into columns and rows. The default is col=:time to split by the time field and row=nothing. Useful

to split by a condition, e.g. ...(..., col=:time, row=:condition) would result in multiple (as many as different values in df.condition) rows of topoplot series.

  • The figure option allows you to include information for plotting the figure. Alternatively, you can pass a fig object eeg_topoplot_series!(fig, data::DataFrame, Δbin; kwargs..).
  • row_labels and col_labels indicate whether there should be labels in the plots in the first column to indicate the row value and in the last row to indicate the time (typically timerange).

Examples

Desc

julia > df = DataFrame(:erp => repeat(1:63, 100), :time => repeat(1:20, 5 * 63), :label => repeat(1:63, 100)) # fake data
+API · UnfoldMakie.jl
UnfoldMakie.df_timebinMethod

function dftimebin(df, Δbin; coly=:erp, fun=mean, grouping=[]) Split or combine dataframe according to equally spaced time bins

  • df AbstractTable with columns :time and col_y (default :erp), and all columns in grouping;
  • Δbin bin size in :time units;
  • col_y default :erp, the column to combine over (with fun);
  • fun function to combine, default is mean;
  • grouping (vector of symbols/strings) default empty vector, columns to group the data by before aggregating. Values of nothing are ignored.
source
UnfoldMakie.eeg_topoplot_seriesMethod

function eegtopoplotseries(data::DataFrame, Δbin; y=:estimate, label=:label, col=:time, row=nothing, figure = NamedTuple(), combinefun=mean, rowlabels = false, collabels = false, topoplot_attributes... )

Plot a series of topoplots. The function automatically takes the combinefun=mean over the :time column of data in Δbin steps.

  • The data frame data needs the columns :time and y(=:erp), and label(=:label). If data is a matrix, it is automatically cast to a dataframe, time bins are in samples, labels are string.(1:size(data,1)).
  • Δbin in :time units, specifying the time steps. All other keyword arguments are passed to the EEG_TopoPlot recipe. In most cases, the user should specify the electrode positions with positions=pos.
  • The col and row arguments specify the field to be divided into columns and rows. The default is col=:time to split by the time field and row=nothing. Useful

to split by a condition, e.g. ...(..., col=:time, row=:condition) would result in multiple (as many as different values in df.condition) rows of topoplot series.

  • The figure option allows you to include information for plotting the figure. Alternatively, you can pass a fig object eeg_topoplot_series!(fig, data::DataFrame, Δbin; kwargs..).
  • row_labels and col_labels indicate whether there should be labels in the plots in the first column to indicate the row value and in the last row to indicate the time (typically timerange).

Examples

Desc

julia > df = DataFrame(:erp => repeat(1:63, 100), :time => repeat(1:20, 5 * 63), :label => repeat(1:63, 100)) # fake data
 julia > pos = [(1:63) ./ 63 .* (sin.(range(-2 * pi, 2 * pi, 63))) (1:63) ./ 63 .* cos.(range(-2 * pi, 2 * pi, 63))] .* 0.5 .+ 0.5 # fake electrode positions
 julia > pos = [Point2.(pos[k, 1], pos[k, 2]) for k in 1:size(pos, 1)]
-julia > eeg_topoplot_series(df, 5; positions=pos)
source
UnfoldMakie.plot_butterflyMethod

Plot Butterfly

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = false, legendPosition = :right, xlabelFromMapping = :x, ylabelFromMapping = :y, useColorbar = false, hidespines = (:r, :t))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), color = (:channel, :channels, :trial, :trials), positions = (:pos, :positions, :position, :topoPositions, :x, nothing), labels = (:labels, :label, :topoLabels, :sensor, nothing))

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of AlgebraOfGraphics.colobar!

key-word arguments

  • topomarkersize (Real, 10) - change the size of the markers, topoplot-inlay electrodes
  • topowidth (Real, 0.25) - change the size of the inlay topoplot width
  • topoheigth (Real, 0.25) - change the size of the inlay topoplot height

see also plot_erp

source
UnfoldMakie.plot_circulareegtopoplotMethod
plot_circulareegtopoplot(plotData::DataFrame;kwargs...)
-plot_circulareegtopoplot!(figlike, plotData::DataFrame;kwargs...)

Plot a circular EEG topoplot.

Arguments:

  • figlike::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into

  • plotData::DataFrame: Dataframe with keys for data (looks for :y,:yhat, :estimate, and :position (looks for :pos, :positions, :position),

  • predictor (optional; default :predictor) the circular predictor value, defines position of topoplot, is mapped around predictorBounds

  • predictorBounds: Default: [0,360] - The bounds of the predictor. This is relevant for the axis labels.

  • centerlabel: default "", the text in the center of the cricle

  • positions (nothing) - positions for the plot_topoplot

  • labels (nothing) - labels for the plot_topoplot

  • kwargs...: Additional styling behavior, see below.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (aspect = Makie.DataAspect(), label = "") - use kwargs... of Makie.Axis

layout = (showLegend = false, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true, hidespines = (), hidedecorations = ())

mapping = (x = (nothing,), y = (:estimate, :yhat, :y), positions = (:pos, :positions, :position, nothing), labels = (:labels, :label, :sensor, nothing))

visual = (colormap = Makie.Reverse{Symbol}(:RdBu), contours = (color = :white, linewidth = 2), labelscatter = true, labeltext = true, boundinggeometry = GeometryBasics.Circle) - *use kwargs... of [``Topoplot.eegtopoplot``](@ref)*

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false, label = "Voltage [µV]", colormap = Makie.Reverse{Symbol}(:RdBu)) - use kwargs... of Makie.Colorbar

Return Value:

A figure containing the circular topoplot at given layout position

source
UnfoldMakie.plot_designmatrixMethod
plot_designmatrix(plotData::Unfold.DesignMatrix;kwargs...)

Plot a designmatrix.

Arguments:

  • plotData::Unfold.DesignMatrix: Data for the plot visualization.

kwargs

  • standardizeData: (bool,true) - Indicating whether the data is standardized by pointwise division of the data with its sampled standard deviation.
  • sortData: (bool, true) - Indicating whether the data is sorted; using sortslices() of Base Julia.
  • xTicks: (nothing)

Indicating the number of labels on the x-axis. Behavior if specified in configuration:

  • xTicks = 0: no labels are placed.
  • xTicks = 1: first possible label is placed.
  • xTicks = 2: first and last possible labels are placed.
  • 2 < xTicks < number of labels: Equally distribute the labels.
  • xTicks ≥ number of labels: all labels are placed.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (xticklabelrotation = 0.39269908169872414,) - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true)

mapping = (x = (:time,), y = (:estimate, :yhat, :y))

visual = (colormap = :roma,) - use kwargs... of $Makie.heatmap$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

A figure displaying the designmatrix.

source
UnfoldMakie.plot_erpMethod
plot_erp!(f::Union{GridPosition, Figure}, plotData::DataFrame; kwargs...)
-plot_erp(plotData::DataFrame; kwargs...)

Plot an ERP plot.

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into
  • plotData::DataFrame: Data for the line plot visualization.
  • kwargs...: Additional styling behavior. Often used: plot_erp(df; mapping=(; color=:coefname, col=:conditionA))

kwargs (...; ...):

  • categoricalColor (bool, true) - Indicates whether the column referenced in mapping.color should be used nonnumerically.
  • categoricalGroup (bool, true) - Indicates whether the column referenced in mapping.group should be used nonnumerically.
  • topoLegend (bool, false) - Indicating whether a topo plot is used as a legend.
  • stderror (bool, false) - Indicating whether the plot should show a colored band showing lower and higher estimates based on the stderror.
  • pvalue (Array, []) - example: DataFrame(from=[0.1,0.3], to=[0.5,0.7], coefname=["(Intercept)", "condition:face"]) - if coefname not specified, the lines will be black

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = :x, ylabelFromMapping = :y, useColorbar = false, hidespines = (:r, :t))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), color = (:color, :coefname, nothing))

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of AlgebraOfGraphics.colobar!

Return Value:

  • f - Figure() or the inputed f
source
UnfoldMakie.plot_newMethod
plot_new() -> String
-

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = :x, ylabelFromMapping = :y, useColorbar = false, hidespines = (:r, :t))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), color = (:color, :coefname, nothing))

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of AlgebraOfGraphics.colobar!

source
UnfoldMakie.plot_parallelcoordinatesMethod
plot_parallelcoordinates!(f::Union{GridPosition, Figure}, plotData::DataFrame, config::PlotConfig; channels::Vector{Int64})

Plot a PCP (parallel coordinates plot).

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into
  • plotData::DataFrame: Data for the plot visualization.
  • config::PlotConfig: Instance of PlotConfig being applied to the visualization.
  • channels::Vector{Int64}: vector with all the channels representing an axis used in the PCP in given order.

PCP has problems with size changes of the view window. By adapting the padding, aspect ratio and tick label size in px for a new use case, the PCP can even be added into a Coordinated Multiple Views System

pc_aspect_ratio Default : 0.55

pc_right_padding Default : 15

pc_left_padding Default : 25

pc_top_padding Default : 26

pc_bottom_padding Default : 16

pc_tick_label_size Default : 14

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = :channel, ylabelFromMapping = :y, useColorbar = false, hidespines = (), hidedecorations = (label = false,))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), channel = :channel, category = :category, time = :time)

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

The input f

source
UnfoldMakie.plot_topoplotMethod
plot_topoplot!(f::Union{GridPosition, Figure}, plotData, ; positions=nothing, labels=nothing,kwargs...)
-plot_topoplot(plotData,; positions=nothing, labels=nothing,kwargs...)

Plot a topo plot.

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition (e.g. f[2, 3]) that the plot should be drawn into. New axis is created.
  • plotData::Union{DataFrame, Vector{Float32}}: Data for the plot visualization.
  • positions::Vector{Point{2, Float32}}=nothing: positions used if plotData is no DataFrame. If this is the case and positions=nothing then positions is generated from labels.
  • labels::Vector{String}=nothing: labels used if plotData is no DataFrame.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (aspect = Makie.DataAspect(),) - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true, hidespines = (), hidedecorations = ())

mapping = (x = (nothing,), y = (:estimate, :yhat, :y), positions = (:pos, :positions, :position, nothing), labels = (:labels, :label, :sensor, nothing))

visual = (colormap = Makie.Reverse{Symbol}(:RdBu), contours = (color = :white, linewidth = 2), labelscatter = true, labeltext = true, boundinggeometry = GeometryBasics.Circle) - *use kwargs... of [``Topoplot.eegtopoplot``](@ref)*

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

A figure displaying the topo plot.

source
UnfoldMakie.plot_topoplotseriesMethod
plot_topoplotseries!(f::Union{GridPosition, Figure}, plotData::DataFrame,Δbin::Real;kwargs...)
-plot_topoplotseries!(plotData::DataFrame, Δbin::Real;kwargs...)

Plot a Topoplot Series.

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into
  • plotData::DataFrame: DataFrame with data, needs a time column
  • Δbin::Real: A number for how large one bin should be. Δbin is in units of the plotData.time column
  • combinefun (default mean) can be used to specify how the samples within Δbin are combined.
  • rasterize_heatmaps (deault true) - enforce rasterization of the plot heatmap when saving in svg format.

This has the benefit that all lines/points are vectors, except the interpolated heatmap. This is typically what you want, because else you get ~500x500 vectors per topoplot, which makes everything super slow.

  • col_labels, row_labels - shows column and row labels.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (aspect = Makie.DataAspect(),) - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true, hidespines = (), hidedecorations = ())

mapping = (x = (nothing,), y = (:estimate, :yhat, :y), positions = (:pos, :positions, :position, nothing), labels = (:labels, :label, :sensor, nothing), col = (:time,), row = (nothing,))

visual = (colormap = Makie.Reverse{Symbol}(:RdBu), contours = (color = :white, linewidth = 2), labelscatter = true, labeltext = false, boundinggeometry = GeometryBasics.Circle) - *use kwargs... of [``Topoplot.eegtopoplot``](@ref)*

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

The input f

source
UnfoldMakie.to_positionsMethod

topositions(x,y,z;sphere=[0,0,0.]) topositions(pos::AbstractMatrix;sphere=[0,0,0.]) Projects 3D electrode positions to a 2D layout.

The matrix case, assumes size(pos) = (3,nChannels) Re-implementation of the MNE algorithm.

Tipp: You can directly get positions from an MNE object after loading PyMNE and thus activating the UnfoldMakie PyMNE extension

source

Internally, we use a PlotConfig struct to keep track of common plot options, in order to have a similar API to all functions

UnfoldMakie.PlotConfigType
PlotConfig(<plotname>)
-holds various different fields, that can modify various different plotting aspects.
source
+julia > eeg_topoplot_series(df, 5; positions=pos)
source
UnfoldMakie.plot_butterflyMethod

Plot Butterfly

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = false, legendPosition = :right, xlabelFromMapping = :x, ylabelFromMapping = :y, useColorbar = false, hidespines = (:r, :t))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), color = (:channel, :channels, :trial, :trials), positions = (:pos, :positions, :position, :topoPositions, :x, nothing), labels = (:labels, :label, :topoLabels, :sensor, nothing))

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of AlgebraOfGraphics.colobar!

key-word arguments

  • topomarkersize (Real, 10) - change the size of the markers, topoplot-inlay electrodes
  • topowidth (Real, 0.25) - change the size of the inlay topoplot width
  • topoheigth (Real, 0.25) - change the size of the inlay topoplot height

see also plot_erp

source
UnfoldMakie.plot_circulareegtopoplotMethod
plot_circulareegtopoplot(plotData::DataFrame;kwargs...)
+plot_circulareegtopoplot!(figlike, plotData::DataFrame;kwargs...)

Plot a circular EEG topoplot.

Arguments:

  • figlike::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into

  • plotData::DataFrame: Dataframe with keys for data (looks for :y,:yhat, :estimate, and :position (looks for :pos, :positions, :position),

  • predictor (optional; default :predictor) the circular predictor value, defines position of topoplot, is mapped around predictorBounds

  • predictorBounds: Default: [0,360] - The bounds of the predictor. This is relevant for the axis labels.

  • centerlabel: default "", the text in the center of the cricle

  • positions (nothing) - positions for the plot_topoplot

  • labels (nothing) - labels for the plot_topoplot

  • kwargs...: Additional styling behavior, see below.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (aspect = Makie.DataAspect(), label = "") - use kwargs... of Makie.Axis

layout = (showLegend = false, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true, hidespines = (), hidedecorations = ())

mapping = (x = (nothing,), y = (:estimate, :yhat, :y), positions = (:pos, :positions, :position, nothing), labels = (:labels, :label, :sensor, nothing))

visual = (colormap = Makie.Reverse{Symbol}(:RdBu), contours = (color = :white, linewidth = 2), labelscatter = true, labeltext = true, boundinggeometry = GeometryBasics.Circle) - *use kwargs... of [``Topoplot.eegtopoplot``](@ref)*

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false, label = "Voltage [µV]", colormap = Makie.Reverse{Symbol}(:RdBu)) - use kwargs... of Makie.Colorbar

Return Value:

A figure containing the circular topoplot at given layout position

source
UnfoldMakie.plot_designmatrixMethod
plot_designmatrix(plotData::Unfold.DesignMatrix;kwargs...)

Plot a designmatrix.

Arguments:

  • plotData::Unfold.DesignMatrix: Data for the plot visualization.

kwargs

  • standardizeData: (bool,true) - Indicating whether the data is standardized by pointwise division of the data with its sampled standard deviation.
  • sortData: (bool, true) - Indicating whether the data is sorted; using sortslices() of Base Julia.
  • xTicks: (nothing)

Indicating the number of labels on the x-axis. Behavior if specified in configuration:

  • xTicks = 0: no labels are placed.
  • xTicks = 1: first possible label is placed.
  • xTicks = 2: first and last possible labels are placed.
  • 2 < xTicks < number of labels: Equally distribute the labels.
  • xTicks ≥ number of labels: all labels are placed.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (xticklabelrotation = 0.39269908169872414,) - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true)

mapping = (x = (:time,), y = (:estimate, :yhat, :y))

visual = (colormap = :roma,) - use kwargs... of $Makie.heatmap$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

A figure displaying the designmatrix.

source
UnfoldMakie.plot_erpMethod
plot_erp!(f::Union{GridPosition, Figure}, plotData::DataFrame; kwargs...)
+plot_erp(plotData::DataFrame; kwargs...)

Plot an ERP plot.

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into
  • plotData::DataFrame: Data for the line plot visualization.
  • kwargs...: Additional styling behavior. Often used: plot_erp(df; mapping=(; color=:coefname, col=:conditionA))

kwargs (...; ...):

  • categoricalColor (bool, true) - Indicates whether the column referenced in mapping.color should be used nonnumerically.
  • categoricalGroup (bool, true) - Indicates whether the column referenced in mapping.group should be used nonnumerically.
  • topoLegend (bool, false) - Indicating whether a topo plot is used as a legend.
  • stderror (bool, false) - Indicating whether the plot should show a colored band showing lower and higher estimates based on the stderror.
  • pvalue (Array, []) - example: DataFrame(from=[0.1,0.3], to=[0.5,0.7], coefname=["(Intercept)", "condition:face"]) - if coefname not specified, the lines will be black

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = :x, ylabelFromMapping = :y, useColorbar = false, hidespines = (:r, :t))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), color = (:color, :coefname, nothing))

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of AlgebraOfGraphics.colobar!

Return Value:

  • f - Figure() or the inputed f
source
UnfoldMakie.plot_newMethod
plot_new() -> String
+

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = :x, ylabelFromMapping = :y, useColorbar = false, hidespines = (:r, :t))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), color = (:color, :coefname, nothing))

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of AlgebraOfGraphics.colobar!

source
UnfoldMakie.plot_parallelcoordinatesMethod
plot_parallelcoordinates!(f::Union{GridPosition, Figure}, plotData::DataFrame, config::PlotConfig; channels::Vector{Int64})

Plot a PCP (parallel coordinates plot).

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into
  • plotData::DataFrame: Data for the plot visualization.
  • config::PlotConfig: Instance of PlotConfig being applied to the visualization.
  • channels::Vector{Int64}: vector with all the channels representing an axis used in the PCP in given order.

PCP has problems with size changes of the view window. By adapting the padding, aspect ratio and tick label size in px for a new use case, the PCP can even be added into a Coordinated Multiple Views System

pc_aspect_ratio Default : 0.55

pc_right_padding Default : 15

pc_left_padding Default : 25

pc_top_padding Default : 26

pc_bottom_padding Default : 16

pc_tick_label_size Default : 14

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = NamedTuple() - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = :channel, ylabelFromMapping = :y, useColorbar = false, hidespines = (), hidedecorations = (label = false,))

mapping = (x = (:time,), y = (:estimate, :yhat, :y), channel = :channel, category = :category, time = :time)

visual = (colormap = :roma,) - use kwargs... of $Makie.lines$

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

The input f

source
UnfoldMakie.plot_topoplotMethod
plot_topoplot!(f::Union{GridPosition, Figure}, plotData, ; positions=nothing, labels=nothing,kwargs...)
+plot_topoplot(plotData,; positions=nothing, labels=nothing,kwargs...)

Plot a topo plot.

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition (e.g. f[2, 3]) that the plot should be drawn into. New axis is created.
  • plotData::Union{DataFrame, Vector{Float32}}: Data for the plot visualization.
  • positions::Vector{Point{2, Float32}}=nothing: positions used if plotData is no DataFrame. If this is the case and positions=nothing then positions is generated from labels.
  • labels::Vector{String}=nothing: labels used if plotData is no DataFrame.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (aspect = Makie.DataAspect(),) - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true, hidespines = (), hidedecorations = ())

mapping = (x = (nothing,), y = (:estimate, :yhat, :y), positions = (:pos, :positions, :position, nothing), labels = (:labels, :label, :sensor, nothing))

visual = (colormap = Makie.Reverse{Symbol}(:RdBu), contours = (color = :white, linewidth = 2), labelscatter = true, labeltext = true, boundinggeometry = GeometryBasics.Circle) - *use kwargs... of [``Topoplot.eegtopoplot``](@ref)*

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

A figure displaying the topo plot.

source
UnfoldMakie.plot_topoplotseriesMethod
plot_topoplotseries!(f::Union{GridPosition, Figure}, plotData::DataFrame,Δbin::Real;kwargs...)
+plot_topoplotseries!(plotData::DataFrame, Δbin::Real;kwargs...)

Plot a Topoplot Series.

Arguments:

  • f::Union{GridPosition, Figure}: Figure or GridPosition that the plot should be drawn into
  • plotData::DataFrame: DataFrame with data, needs a time column
  • Δbin::Real: A number for how large one bin should be. Δbin is in units of the plotData.time column
  • combinefun (default mean) can be used to specify how the samples within Δbin are combined.
  • rasterize_heatmaps (deault true) - enforce rasterization of the plot heatmap when saving in svg format.

This has the benefit that all lines/points are vectors, except the interpolated heatmap. This is typically what you want, because else you get ~500x500 vectors per topoplot, which makes everything super slow.

  • col_labels, row_labels - shows column and row labels.

Shared plot configuration options

The shared plot options can be used as follows: type=(;key=value,...)) - for example plot_x(...,layout=(showLegend=true,legendPosition=:right)). Multiple defaults will be cycled until match.

figure = NamedTuple() - use kwargs... of Makie.Figure

axis = (aspect = Makie.DataAspect(),) - use kwargs... of Makie.Axis

layout = (showLegend = true, legendPosition = :right, xlabelFromMapping = nothing, ylabelFromMapping = nothing, useColorbar = true, hidespines = (), hidedecorations = ())

mapping = (x = (nothing,), y = (:estimate, :yhat, :y), positions = (:pos, :positions, :position, nothing), labels = (:labels, :label, :sensor, nothing), col = (:time,), row = (nothing,))

visual = (colormap = Makie.Reverse{Symbol}(:RdBu), contours = (color = :white, linewidth = 2), labelscatter = true, labeltext = false, boundinggeometry = GeometryBasics.Circle) - *use kwargs... of [``Topoplot.eegtopoplot``](@ref)*

legend = (orientation = :vertical, tellwidth = true, tellheight = false) - use kwargs... of Makie.Legend

colorbar = (vertical = true, tellwidth = true, tellheight = false) - use kwargs... of Makie.Colorbar

Return Value:

The input f

source
UnfoldMakie.to_positionsMethod

topositions(x,y,z;sphere=[0,0,0.]) topositions(pos::AbstractMatrix;sphere=[0,0,0.]) Projects 3D electrode positions to a 2D layout.

The matrix case, assumes size(pos) = (3,nChannels) Re-implementation of the MNE algorithm.

Tipp: You can directly get positions from an MNE object after loading PyMNE and thus activating the UnfoldMakie PyMNE extension

source

Internally, we use a PlotConfig struct to keep track of common plot options, in order to have a similar API to all functions

UnfoldMakie.PlotConfigType
PlotConfig(<plotname>)
+holds various different fields, that can modify various different plotting aspects.
source
diff --git a/dev/helper/index.html b/dev/helper/index.html index 85cb3aa52..6760ca837 100644 --- a/dev/helper/index.html +++ b/dev/helper/index.html @@ -1,5 +1,5 @@ -Utilities · UnfoldMakie.jl
UnfoldMakie.RelativeAxisType

ax = RelativeAxis(figlike, p::NTuple{4, Float64}; kwargs...)

Returns an axis which's position is relative to a GridLayout Element (via BBox) and not relative to the Scene (default Axis(..., bbox=BBox()) behavior)

p::NTuple{4,Float64}: Give the relative position to the GridPosition, left:right; bottom:up, typical numbers betwen 0 and 1. E.g. (0.25, 0.75, 0.25, 0.75) would center an Axis inside that GridPosition

kwargs... are pasted into Axis

f = Figure() ax = RelativeAxis(f[1,2], (0.25, 0.75, 0.25, 0.75)) # returns Axis centered within f[1,2]

source
UnfoldMakie.eeg_topoplot_seriesFunction

function eegtopoplotseries(data::DataFrame, Δbin; y=:estimate, label=:label, col=:time, row=nothing, figure = NamedTuple(), combinefun=mean, rowlabels = false, collabels = false, topoplot_attributes... )

Plot a series of topoplots. The function automatically takes the combinefun=mean over the :time column of data in Δbin steps.

  • The data frame data needs the columns :time and y(=:erp), and label(=:label). If data is a matrix, it is automatically cast to a dataframe, time bins are in samples, labels are string.(1:size(data,1)).
  • Δbin in :time units, specifying the time steps. All other keyword arguments are passed to the EEG_TopoPlot recipe. In most cases, the user should specify the electrode positions with positions=pos.
  • The col and row arguments specify the field to be divided into columns and rows. The default is col=:time to split by the time field and row=nothing. Useful

to split by a condition, e.g. ...(..., col=:time, row=:condition) would result in multiple (as many as different values in df.condition) rows of topoplot series.

  • The figure option allows you to include information for plotting the figure. Alternatively, you can pass a fig object eeg_topoplot_series!(fig, data::DataFrame, Δbin; kwargs..).
  • row_labels and col_labels indicate whether there should be labels in the plots in the first column to indicate the row value and in the last row to indicate the time (typically timerange).

Examples

Desc

julia > df = DataFrame(:erp => repeat(1:63, 100), :time => repeat(1:20, 5 * 63), :label => repeat(1:63, 100)) # fake data
+Utilities · UnfoldMakie.jl
UnfoldMakie.RelativeAxisType

ax = RelativeAxis(figlike, p::NTuple{4, Float64}; kwargs...)

Returns an axis which's position is relative to a GridLayout Element (via BBox) and not relative to the Scene (default Axis(..., bbox=BBox()) behavior)

p::NTuple{4,Float64}: Give the relative position to the GridPosition, left:right; bottom:up, typical numbers betwen 0 and 1. E.g. (0.25, 0.75, 0.25, 0.75) would center an Axis inside that GridPosition

kwargs... are pasted into Axis

f = Figure() ax = RelativeAxis(f[1,2], (0.25, 0.75, 0.25, 0.75)) # returns Axis centered within f[1,2]

source
UnfoldMakie.eeg_topoplot_seriesFunction

function eegtopoplotseries(data::DataFrame, Δbin; y=:estimate, label=:label, col=:time, row=nothing, figure = NamedTuple(), combinefun=mean, rowlabels = false, collabels = false, topoplot_attributes... )

Plot a series of topoplots. The function automatically takes the combinefun=mean over the :time column of data in Δbin steps.

  • The data frame data needs the columns :time and y(=:erp), and label(=:label). If data is a matrix, it is automatically cast to a dataframe, time bins are in samples, labels are string.(1:size(data,1)).
  • Δbin in :time units, specifying the time steps. All other keyword arguments are passed to the EEG_TopoPlot recipe. In most cases, the user should specify the electrode positions with positions=pos.
  • The col and row arguments specify the field to be divided into columns and rows. The default is col=:time to split by the time field and row=nothing. Useful

to split by a condition, e.g. ...(..., col=:time, row=:condition) would result in multiple (as many as different values in df.condition) rows of topoplot series.

  • The figure option allows you to include information for plotting the figure. Alternatively, you can pass a fig object eeg_topoplot_series!(fig, data::DataFrame, Δbin; kwargs..).
  • row_labels and col_labels indicate whether there should be labels in the plots in the first column to indicate the row value and in the last row to indicate the time (typically timerange).

Examples

Desc

julia > df = DataFrame(:erp => repeat(1:63, 100), :time => repeat(1:20, 5 * 63), :label => repeat(1:63, 100)) # fake data
 julia > pos = [(1:63) ./ 63 .* (sin.(range(-2 * pi, 2 * pi, 63))) (1:63) ./ 63 .* cos.(range(-2 * pi, 2 * pi, 63))] .* 0.5 .+ 0.5 # fake electrode positions
 julia > pos = [Point2.(pos[k, 1], pos[k, 2]) for k in 1:size(pos, 1)]
-julia > eeg_topoplot_series(df, 5; positions=pos)
source
UnfoldMakie.to_positionsFunction

topositions(x,y,z;sphere=[0,0,0.]) topositions(pos::AbstractMatrix;sphere=[0,0,0.]) Projects 3D electrode positions to a 2D layout.

The matrix case, assumes size(pos) = (3,nChannels) Re-implementation of the MNE algorithm.

Tipp: You can directly get positions from an MNE object after loading PyMNE and thus activating the UnfoldMakie PyMNE extension

source
UnfoldMakie.df_timebinFunction

function dftimebin(df, Δbin; coly=:erp, fun=mean, grouping=[]) Split or combine dataframe according to equally spaced time bins

  • df AbstractTable with columns :time and col_y (default :erp), and all columns in grouping;
  • Δbin bin size in :time units;
  • col_y default :erp, the column to combine over (with fun);
  • fun function to combine, default is mean;
  • grouping (vector of symbols/strings) default empty vector, columns to group the data by before aggregating. Values of nothing are ignored.
source
+julia > eeg_topoplot_series(df, 5; positions=pos)
source
UnfoldMakie.to_positionsFunction

topositions(x,y,z;sphere=[0,0,0.]) topositions(pos::AbstractMatrix;sphere=[0,0,0.]) Projects 3D electrode positions to a 2D layout.

The matrix case, assumes size(pos) = (3,nChannels) Re-implementation of the MNE algorithm.

Tipp: You can directly get positions from an MNE object after loading PyMNE and thus activating the UnfoldMakie PyMNE extension

source
UnfoldMakie.df_timebinFunction

function dftimebin(df, Δbin; coly=:erp, fun=mean, grouping=[]) Split or combine dataframe according to equally spaced time bins

  • df AbstractTable with columns :time and col_y (default :erp), and all columns in grouping;
  • Δbin bin size in :time units;
  • col_y default :erp, the column to combine over (with fun);
  • fun function to combine, default is mean;
  • grouping (vector of symbols/strings) default empty vector, columns to group the data by before aggregating. Values of nothing are ignored.
source