编者注: This file was selected as MATLAB Central Pick of the Week
The zip-file contains the following files for visualizing distributions:
- distributionPlot.m: main function that allows creating violin plots
- myHistogram.m: generate histograms with 'ideal' bin width given the number of data points and the spread (Freedman-Diaconis rule). Note that for integer-valued data, each integer gets its own bin.
In addition, the zip file contains four helper functions: countEntries, colorCode2rgb, isEven, myErrorbar
If you want to overlay individual data points, you need to download the separate submission plotSpread (http://www.mathworks.com/matlabcentral/fileexchange/37105).
DistributionPlot allows visualizing multiple distributions side by side. It is useful for skewed unimodal data and indispensable for multimodal data. DistributionPlot is especially useful for showing the time evolution of a distribution.
Some of the examples from the help:
r = rand(1000,1);
rn = randn(1000,1)*0.38+0.5;
rn2 = [randn(500,1)*0.1+0.27;randn(500,1)*0.1+0.73];
rn2=min(rn2,1);rn2=max(rn2,0);
figure
ah(1)=subplot(2,4,1:2);
boxplot([r,rn,rn2])
ah(2)=subplot(2,4,3:4);
distributionPlot([r,rn,rn2],'histOpt',2); % histOpt=2 works better for uniform distributions than the default
set(ah,'ylim',[-1 2])
%--additional options
data = [randn(100,1);randn(50,1)+4;randn(25,1)+8];
subplot(2,4,5)
distributionPlot(data); % defaults
subplot(2,4,6)
distributionPlot(data,'colormap',copper,'showMM',5,'variableWidth',false) % show density via custom colormap only, show mean/std,
subplot(2,4,7:8)
distributionPlot({data(1:5:end),repmat(data,2,1)},'addSpread',true,'showMM',false,'histOpt',2) %auto-binwidth depends on # of datapoints; for small n, plotting the data is useful
引用格式
Jonas (2024). Violin Plots for plotting multiple distributions (distributionPlot.m) (https://www.mathworks.com/matlabcentral/fileexchange/23661-violin-plots-for-plotting-multiple-distributions-distributionplot-m), MATLAB Central File Exchange. 检索时间: .
MATLAB 版本兼容性
平台兼容性
Windows macOS Linux类别
标签
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!distributionPlot/
版本 | 已发布 | 发行说明 | |
---|---|---|---|
1.15.0.0 | renamed histogram to myHistogram to avoid clash with new Matlab function of the same name, added support for boxplot overlays |
||
1.14.0.0 | Improved documentation (more examples, link to plotSpread), added quantiles (thanks to Warwick for suggestion & testing). Also, belated thanks to Kelly for suggesting horizontal orientation. |
||
1.13.0.0 | Added the following new features:
Additionally, plotSpread is now a separate submission. |
||
1.12.0.0 | Added option to align the bars at the left or the right (option "histOri"), as suggested by Yuri. Also, bugfix. |
||
1.9.0.0 | Improved normalization options. Thanks to Jake for the suggestion. |
||
1.7.0.0 | Fixed a bug in the code, and two mistakes in the example. |
||
1.6.0.0 | Made colorbar more meaningful if there is only one colormap and the bins are normalized globally (i.e. globalNorm is set to 1). Thanks to Brian Katz for the suggestion. |
||
1.4.0.0 | Changed input from optional arguments to parameterName/parameterValue pairs (note that the old syntax still works!).
|
||
1.3.0.0 | Updated title to Violin Plot, because that's how (part) of these plots are called elsewhere. |
||
1.2.0.0 | Documented previously undocumented functionality, chose better screenshot to demonstrate how distributionPlot is better for comparing distributions than boxplot |
||
1.1.0.0 | Fixed cryptic error if the data was all NaNs (thanks Christopher for pointing it out!).
|
||
1.0.0.0 |