相信大家对小提琴图并不陌生,它是比箱形图更易于视觉直观解读的图形绘制方法。它使用数据的核密度估计值代替了箱形图,并可选择叠加数据点本身。小提琴图是箱形图的升级加强版,对数据分布有更丰富的理解,同时不必占用更多空间。在小提琴图中,可以轻松发现过于稀疏的数据或多模式分布,而这些在箱形图中可能不会被注意到。本文推荐一款由Bastian Bechtold开发的小提琴图绘制工具箱 —— Violinplots。
Violinplot工具共包含三个文件,定义小提琴图类的Violin.m类文件,调用小提琴类的构造函数violinplot.m,以及一个示例文件testviolinplot.m。为了方便展示,小编已经对示例文件做了一定程度上的修改,详见下方示例代码。Violinplot可作为boxplot工具箱的直接替代品,当然不包括命名参数。附加的构造函数参数包括小提琴图的宽度、核密度估计的带宽和在X轴分布位置。
示例代码
代码语言:javascript复制clear;clc;close all;
load carbig MPG Origin
Origin = cellstr(Origin);
loc = find(ismember(Origin,'England'));
Origin(loc) = [];
MPG(loc) = [];
grouporder={'Sweden','USA','Japan','Italy','Germany','France'};
fig = figure('Position',[495 186 894 700],...
'Name','matlab科研绘图之小提琴图',...
'NumberTitle','off',...
'Color','w',...
'Menubar','none');
vs2 = violinplot(MPG,Origin,'GroupOrder',grouporder,'Width',0.3);
xlim([0.5, 6.5]);
box on;
set(gca,'LineWidth',1.5,...
'FontName','Times New Roman',...
'FontWeight','bold',...
'FontSize',18);
效果图见文首!
关于小提琴图的更多信息,请阅读J.L.Hintze和R.D.Nelson在The American Statistician, vol.52, no.2, pp.181-184, 1998发表的文章 "Violin plots: a box plot-density trace synergism" (DOI: 10.2307/2685478)。
如有需要Violinplot工具箱的关注者,请在matlab爱好者公众号中回复“QQ”加群,在群资料中下载,或点击阅读原文直接下载。
参考资料:github.com/bastibe/Violinplot-Matlab