在R中创建一个框图,用于标记样本大小(N)的框

时间:2010-08-14 12:12:28

标签: r graph plot label boxplot

有没有办法在R中创建一个框图,它会在框中显示(某处)“N =(样本大小)”? varwidth logical根据样本大小调整框的宽度,但不允许在不同的图之间进行比较。

FWIW,我正在以下列方式使用boxplot命令,其中'f1'是一个因素:

boxplot(xvar ~ f1, data=frame, xlab="input values", horizontal=TRUE)

5 个答案:

答案 0 :(得分:27)

这是一些ggplot2代码。它将在样本均值处显示样本大小,使标签更加多功能化!

首先,fun.data

的简单函数
give.n <- function(x){
   return(c(y = mean(x), label = length(x)))
}

现在,用钻石数据来证明

ggplot(diamonds, aes(cut, price)) + 
   geom_boxplot() + 
   stat_summary(fun.data = give.n, geom = "text")

您可能需要使用文本大小才能使其看起来很好,但现在您有一个样本大小的标签,这也会给出一种倾斜感。

答案 1 :(得分:10)

您可以使用names参数在每个因子名称旁边写下n

如果您不想自己计算n,可以使用这个小技巧:

# Do the boxplot but do not show it
b <- boxplot(xvar ~ f1, data=frame, plot=0)
# Now b$n holds the counts for each factor, we're going to write them in names
boxplot(xvar ~ f1, data=frame, xlab="input values", names=paste(b$names, "(n=", b$n, ")"))

答案 2 :(得分:4)

要在条形图的顶部显示n,您可以将text与boxplot提供的stat详细信息一起使用,如下所示

b <- boxplot(xvar ~ f1, data=frame, plot=0)
text(1:length(b$n), b$stats[5,]+1, paste("n=", b$n))

b的统计字段是 一个矩阵,每列包含下部晶须的极端,下部铰链,中间,上部铰链和上部晶须的极端,用于一组/图。

答案 3 :(得分:1)

gplots包提供boxplot.n,根据文档生成一个用观察数量注释的箱线图

答案 4 :(得分:0)

我找到了使用Envstats包的解决方法。需要使用以下命令下载,加载和激活此包:

create or replace procedure insertOsoba
   ( o_osoba_id in osoba.osoba_id%type default generate_id.nextval,
     o_ime_osobe in osoba.ime_osobe%type,
     o_prezime_osobe in osoba.prezime_osobe%type,
     o_kartica_id in kartica.kartica_id%type default null --must be optional
   )
is
begin
      insert into osoba (osoba_id,ime_osobe,prezime_osobe,kartica_id)
      values (o_osoba_id,o_ime_osobe,o_prezime_osobe,o_kartica_id);
end insertosoba;

stripChart(与条形图不同)确实会向图表添加一些值,例如n值。首先,我绘制了我的箱线图。然后我在stripChart中使用了add = T.显然,很多东西都隐藏在stripChart代码中,因此它们不会出现在boxplot上。这是我用于stripChart隐藏大多数项目的代码。

带有集成stripChart的

Boxplot来显示n个值:

library(Envstats)

所以boxplot

stripChart(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1), show.ci=F,axes=F,points.cex=0,n.text.line=1.6,n.text.cex=0.7,add=T,location.scale.text="none")

然后stripChart

boxplot(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1),main="All Rheometry Tests on Egg Plasma at All Time Points at 0.1Hz,0.1% and 37 Set 1,2,3", names=c("0h","24h","96h","7d ", "11d", "15d", "30d"),boxwex=0.6,par(mar=c(8,4,4,2)))

您可以随时调整数字的高位(n值),使其适合您想要的位置。