Answers:
(这实际上是评论,但由于需要插图,因此必须将其作为答复发布。)
埃德·图夫特(Ed Tufte)重新设计了定量信息的可视化显示(1983年,第一版,第125页)中的箱线图,以实现“非正式的探索性数据分析,研究人员的时间应专门用于绘图线以外的事情”。我已经(以一种完全自然的方式)扩展了他的重新设计,以适应此示例中显示70个平行箱形图的图纸异常值:
我可以想到几种进一步改进此方法的方法,但这是在探索复杂数据集的过程中可能产生的特征:我们满足于可视化以查看数据;好的演讲会在以后。
将此与相同数据的常规再现进行比较:
Tufte根据其“最大化数据墨水比率”的原理提出了其他几种重新设计。它们的价值在于说明该原理如何帮助我们设计有效的探索性图形。如您所见,绘制它们的机制就等于找到可以在其中绘制点标记和直线的任何图形平台。
可能是有史以来最酷的情节,它们基本上是小提琴情节的小数倍实现。小提琴图相对于箱形图具有很大的优势:对于非正态分布,它们可以显示更多细节(例如,它们可以很好地显示双峰分布)。因为它们通常基于高斯平滑(或类似的平滑度),所以对于具有较高端点的分布(例如指数分布),它们将不能很好地工作,但是箱形图也不能。
在R中可以很容易地实现Beanplots-只需安装beanplot软件包即可:
library(beanplot)
# Sampling code from Greg Snow's answer:
my.dat <- lapply( 1:20, function(x) rnorm(x+10, sample( 10, 1), sample(3,1) ) )
beanplot(my.dat)
该beanplot
功能有很多选项,因此您可以根据自己的需求进行自定义。还有一种在ggplot2中进行beanplots的方法(需要最新版本):
library(ggplot2)
my.dat <- lapply(1:20, function(x) rnorm(x+10, sample(10, 1), sample(3,1)))
my.df <- melt(my.dat)
ggplot(my.df, aes(x=L1, y=value, group=L1)) + geom_violin(trim=FALSE) +
geom_segment(aes(x=L1-0.1, xend=L1+0.1, y=value, yend=value), colour='white')
以下是一些示例R代码,提供了几种实现方法,您可能希望对此进行扩展(包括标签等),然后将其转换为函数:
my.dat <- lapply( 1:20, function(x) rnorm(x+10, sample( 10, 1), sample(3,1) ) )
tmp <- boxplot(my.dat, plot=FALSE, range=0)
# box and median only
plot( range(tmp$stats), c(1,length(my.dat)), xlab='', ylab='', type='n' )
segments( tmp$stats[2,], seq_along(my.dat), tmp$stats[4,] )
points( tmp$stats[3,], seq_along(my.dat) )
# wiskers and implied box
plot( range(tmp$stats), c(1,length(my.dat)), xlab='', ylab='', type='n' )
segments( tmp$stats[1,], seq_along(my.dat), tmp$stats[2,] )
segments( tmp$stats[4,], seq_along(my.dat), tmp$stats[5,] )
points( tmp$stats[3,], seq_along(my.dat) )