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
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. | |
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. | |
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. | |
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). | |
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). | |
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. | |
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. | |
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
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(D.Group,D.accuracy,... 'split',D.ampl,... 'style_bold',... 'leg','auto'); |
Barplots are good for categorical data with few classes. | |
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). | |
hist_double(x,y); | Histograms show the frequency of observations, here overlaid for two random variables (see also hist_pivot). | |
contour_kernel(x,y); | A density estimate using kernel methods. Function kernel estimates are also possible. | |
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's Homepage |
Matlab Toolboxes |