如何在R中将完整的样本和子样本一起打包?

时间:2014-10-09 21:43:06

标签: r boxplot

我有1个完整样本和10个子样本的阅读分数(性别(2)按种族(5)= 10个组合)。我想把所有11个箱图展示在一起。下面的代码生成10个箱图,但没有完整样本比较箱图。

如何将所有11个箱图放在同一个图/图形中,以便它们共享标题,x轴,y轴等?

理想情况下,如何将10个子群体箱图放置在1个最大宽度种群箱图中,该箱图切割(透明地分层)所有10个子群体箱图,允许观察者以图形方式将每个子样本的1Q,中值和3Q与完整的子样本进行比较样品? (参见下面的例子,其中红色框图表示hs1 $读取的完整样本(1Q:44,中位数:50,3Q:60)。)

Ideal Super-Boxplot

设定:

hs1 = read.table("http://www.ats.ucla.edu/stat/data/hs1.csv", header = T, sep = ",")
## ten boxplots (that i wish to combine with one more representing full sample)
boxplot( read ~ interaction(gender, race), data=hs1, las=2 )

2 个答案:

答案 0 :(得分:3)

boxplot( read ~ interaction(gender, race), data=hs1, las=2 )
bxpfull <- boxplot( hs1$read, plot=FALSE)

 bxp(bxpfull, at= 5, add=TRUE, boxwex=18, 
      pars= list(boxcol="red",medcol="red", medbg="red", 
                 whiskcol="red", staplecol="red") )

enter image description here

如果您想要透明色(并非所有图形设备都支持),那么这会给您一个透明的粉红色结果:

 bxp(bxpfull, at= 5, add=TRUE, boxwex=18, 
      pars= list(boxcol="#ff000050",medcol="#ff000050", medbg="#ff000050", 
                 whiskcol="#ff000050", staplecol="#ff000050") ,las=2)

答案 1 :(得分:0)

如果@ BondedDust的精彩答案会在您的机器上生成以下有缺陷的图形(请注意y轴重叠标签和非透明红色框图)(由于您的图形设备,R版本,默认包等) ,我调整了该代码,以便在我的机器上工作,如下所示。

First Boxplot

boxplot( read ~ interaction(gender, race), data=hs1, las=2 )
bxpfull <- boxplot( hs1$read, plot=FALSE)

bxp(bxpfull, at= 5.5, add=TRUE, boxwex=20, 
    pars= list(boxcol="red", boxfill= "transparent", medlty= "dashed", 
      medcol="red", medbg="red", axes= FALSE, whiskcol="red", staplecol="red") )

请注意,y轴是固定的,红色的箱线图是透明的。此外,虚线允许中位数为0.3的视图,红色箱线图的中心位置和准确拉伸。

Updated Boxplot