notBoxPlot

This function visualizes raw (grouped) data along with the mean, 95% confidence interval, and 1 SD.
16.9K Downloads
Updated Mon, 19 Oct 2020 22:02:57 +0000

Editor's Note: This file was selected as MATLAB Central Pick of the Week

Whilst box plots have their place, it's sometimes nicer to see all the data, rather than hiding them with summary statistics such as the inter-quartile range. This function (with a tongue in cheek name) addresses this problem. The use of the mean instead of the median and the SEM and SD instead of quartiles and whiskers are deliberate. Jittered raw data are plotted for each group. Also shown are the mean, and 95% confidence intervals for the mean. This plotting style is designed to be used alongside parametric tests such as ANOVA and the t-test. Comparing the jittered data to the error bars provides a visual indication of whether the normality assumptions of the statistical tests are being violated. Furthermore, it allows one to eyeball the data to look for significant differences between means (non-overlapping confidence intervals indicate a significant difference at the chosen p-value, which here is 5%). Also see: http://jcb.rupress.org/cgi/content/abstract/177/1/7 Finally, 1 SD is also shown. Note that if data are not normally distributed then these statistics will be less meaningful.
The function has several examples and there are various visualization possibilities in addition to those shown in the above screenshot. For instance, the coloured areas can be replaced by lines.
Although it's worked well for situations I've needed it, I will be happy to modify the function if users come up against problems.
New features from March 2017:
Accepts LinearModel objects as a y variable; Accepts Table objects as a y variable; Examples are now in standalone files; Legacy call format removed; x variable does not need to be defined as empty when it isn't being used

See GitHub page for more details.

Cite As

Rob Campbell (2024). notBoxPlot (https://github.com/raacampbell/notBoxPlot), GitHub. Retrieved .

MATLAB Release Compatibility
Created with R2016b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes
1.31.0.0

BUGFIX to SEM and t-interval calc. Jittered points have a neater form, more like those seen in violin plots.

1.30.0.0

Some operations (such as t-interval calculation) depend on the Stats Toolbox.
Accepts LinearModel objects as a y variable; Accepts Table objects as a y variable; Examples are now in standalone files; Legacy call format removed; x variable does not need to be defined as empty when it isn't being used

1.22.0.0

provide a nicer example image

1.21.0.0

update notes

1.15.0.0

Verified to work with R2015a

1.14.0.0

Update summary.

1.13.0.0

Fixed bug that didn't pass input arguments correctly when two vectors are supplied.

1.11.0.0

Update summary to explain that the function works without the stats toolbox if the nan-toolbox is installed.

1.10.0.0

Better handles x-ticks and x axis limits. Add missing semicolon.

1.9.0.0

Fix bug that was causing handles not return for one of the plot formats.

1.8.0.0

Both x and y can now be vectors, in which case the function behaves like Mathworks' boxplot. An example of this behaviour is provided.

An example of the "sdline" plot style is now provided.

1.7.0.0

If "y" is a vector then the function ensures it is a column vector in order to yield one box-plot.

1.6.0.0

The 4th argument can now also have the value "sdline". This creates plots where the SD is a line instead of a patch.

1.5.0.0

Handle to mean line when in patch mode (the default mode) is now returned.

1.4.0.0

Add link to JCB article on error bars.

1.3.0.0

Add tInterval_Calc and update the comments in SEM_calc

1.2.0.0

rename title
Clarify a point in the description.
move to GitHub
change repo URL

1.1.0.0

re-upload because support file (SEM_calc.m) seemed to be missing

1.0.0.0

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.