создайте блок R в R, который помечает блок с размером выборки (N) - PullRequest
15 голосов
/ 14 августа 2010

Есть ли способ создать блок-график в R, который будет отображать с блоком (где-то) "N = (размер выборки)"?Логическая переменная ширины регулирует ширину поля на основе размера выборки, но это не позволяет сравнивать различные графики.

FWIW, я использую команду boxplot следующим образом, где 'f1'это фактор:

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

Ответы [ 5 ]

27 голосов
/ 14 августа 2010

Вот код 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")

Возможно, вам придется поиграть с размером текста, чтобы он выглядел хорошо, но теперь у вас есть метка для размера выборки, которая также дает ощущение перекоса.

10 голосов
/ 14 августа 2010

Вы можете использовать параметр 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, ")"))
4 голосов
/ 21 ноября 2014

Чтобы получить n на верхней панели, вы можете использовать text с деталями stat, предоставленными boxplot следующим образом

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

Поле статистики b представляет собой матрицу,каждая колонка содержит крайнюю часть нижнего усика, нижнюю петлю, срединное значение, верхнюю петлю и крайнюю часть верхнего усика для одной группы / участка.

1 голос
/ 27 июня 2013

Пакет gplots предоставляет boxplot.n, который в соответствии с документацией создает поле с аннотацией с количеством наблюдений .

0 голосов
/ 10 ноября 2016

Я нашел обходной путь, используя пакет Envstats. Этот пакет необходимо загрузить, загрузить и активировать, используя:

library(Envstats)

StripChart (отличается от stripchart) добавляет к диаграмме некоторые значения, такие как n значений. Сначала я подготовил свой блокпост. Затем я использовал add = T в stripChart. Очевидно, что многие вещи были скрыты в коде stripChart, чтобы они не отображались на блокпосте. Вот код, который я использовал для stripChart, чтобы скрыть большинство элементов.

Boxplot со встроенной диаграммой stripChart для отображения n значений:

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")

Итак, коробочный сюжет

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)))

Тогда раздели чарт

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")

Вы всегда можете отрегулировать максимальное число (n значений), чтобы они соответствовали нужному вам месту.

...