The Graph Toolbox contains functions to generate complex statistical graphs very quickly. The idea is that the user should only have to pass the raw data, and the graph function calculates the to-be-plotted values, including error bars, from the data. Variable option provide the flexibility of the style of plots and the formatting. To not have to redo the styles, there are default formatting "styles" and the possibility to store a formatting option in a structure.

Let's assume we have a dataset from a virtual experiment, in which N=20 subjects, either patients or non-patients, produced 5, 7, 10, or 20cm movements under visual-feedback and no-feedback conditions. The dependent variables are movement time, accuracy, and the actual trajectories. This table can be generate from the raw data using the tapply function in the pivottable toolbox.

The data structure looks like:
D =
SN: [160x1 double]
Group: {160x1 cell}
ampl: [160x1 double]
feedback: [160x1 double]
MT: [160x1 double]
accuracy: [160x1 double]

Basic examples of syntax

 Basic usage lineplot(D.ampl,D.MT); The Basic usage of the plotting functions is lineplot(x,y). The Function plots the mean and standard error for every category in x. x can be either numerical or a string varaible (cell-array). y has to be numerical. Splitting data lineplot([D.feedback D.ampl],D.MT,... 'split',D.Group); We now introduced two x-variables varaibles (x has two columns). Lineplot first groups the data by feedback (no-feeback on the left, feedback on the right) and then by amplitude. The data is 'split' by the variable D.Group and seperate lines are drawn for each category. Subsetting data lineplot(D.ampl,D.MT,...'split',D.Group,...'subset',D.feedback==0); We can exclude data from plotting by specifying a subset-variable. This time we only plot the no-feedback data. Plotting statistic other than mean lineplot(D.ampl,D.MT,...'split',D.Group,... 'plotfcn','(std(x)/2)',...'errorfcn',[]); Instead of plotting the mean of the data, we can also decide to plot any arbitrary function on the data, for example half the standard deviation. The same manipulation works for the length of the errorbars (for asymmetric error bars, see help). Basic formatting lineplot(D.ampl,D.MT,...'split',D.Group,... 'markersize',5,...'linewidth',2); By specifying the values for basic formatting properties, we can specify the format for all the lines/symbols in the graph (for full list see help lineplot). Specific formatting CAT.markertype={'v','^'};CAT.linecolor=... {[1 0 0],[0 0 1]}; CAT.markercolor=... {[1 0 0],[0 0 1]}; CAT.markerfill=... {[0 0 0],[0 0 0]}; lineplot([D.ampl],D.MT,...'split',D.Group,... 'CAT',CAT); If different styles have to be applied to different lines, specify fields in a CAT-structure, each with as many entries as you have categories. If fields are unspecified, the default (or global value) is used. Styles lineplot([D.ampl],D.MT,...'split',D.Group,... 'style_thickline'); Instead of having to define a style each time, you can use predetermined styles. They are easy to add to the code. Adding a legend lineplot([D.ampl],D.MT,...'split',D.Group,... 'style_thickline',...'leg','auto'); For adding a legend, set option 'leg' to 'auto'. This uses the values of the split-varaible to determine the legend text. You can also specify the legend texts directly by setting 'leg' to a cell-array of strings.

Examples of graph types

 boxplot myboxplot(D.ampl,D.MT,...'split',D.Group,...'style_tukey',...'leg','auto'); Boxplots (introduced by Tukey) reveal the median and distribution of small samples. barplot barplot(D.Group,D.accuracy,...'split',D.ampl,...'style_bold',...'leg','auto'); Barplots are good for categorical data with few classes. scatterplot scatterplot(D.MT,D.accuracy,...'split',D.Group); Scatterplots show for seperate groups the relationship between two variables (see scattermatrix for the relation between more than two variables). histograms hist_double(x,y); Histograms show the frequency of observations, here overlaid for two random variables (see also hist_pivot). kernel estimates contour_kernel(x,y); A density estimate using kernel methods. Function kernel estimates are also possible. hist2d hist2d(x,y,'image'); The same data as a 2-d histogram. (see also contour_pivot).

List of functions

 1. Single plot-operations / Utility functions drawline draws vertical or horizontal reference lines drawpatch draws a patch of certain shape confidelps draws Confidence-ellipse over the x,y sample makexlabels Makes labels for the x-axis of Grouped graphs makeglabels Makes group labels for boxplots, etc. errorbars Adds errorbars to bargraphs 2. Standard plots from raw data, many formating options barplot Barplots from raw data lineplot Lineplots from raw data myboxplot Boxplots with formating options xyplot XY-plot with error bars in both directions scatterplot Scatterplot with formating/splitting options trialscatter Scatter of a time series of experimental trials with block boundaries traj_plot Plots trajectories in 2D traceplot Plotting of multiple time series with formating options scattermatrix Matrix of scatterplots to access dependency of variables plotshade Plots times series with +-SD as transparent underlay hist_double Overlays the histograms for two variables hist_pivot Makes M*N subplots with histograms, depending on categorial variabels histdistn_plot Overlays a histogram with a distribution function (Scaled) circhist Circular histogram (see circ toolbox) 3. Multivariate surface plots hist2d Two dimensional histogram presented as a image contour_pivot Makes a contour plot from a pivot-table contour_kernel Makes a contour plot from a kernel estimate (density or function) 4. Formating figure_scalesubplots Scales all subplots to the same axis-limits figure_scalexsubplots Scales all subplots to the same axis-limits figure_scaleysubplots Scales all subplots to the same axis-limits wysiwyg Present Figure on Screen as it is printed Jörn Diedrichsen'sHomepage MatlabToolboxes