Создайте прямоугольник в R, который наклеивает поле с размером выборки (N)
Есть ли способ создать прямоугольник в R, который будет отображаться с полем (где-нибудь) "N = (размер выборки)"? Логика varwidth настраивает ширину окна на основе размера выборки, но это не позволяет сравнивать разные графики.
FWIW, я использую команду boxplot следующим образом, где "f1" является фактором:
boxplot(xvar ~ f1, data=frame, xlab="input values", horizontal=TRUE)
Ответы
Ответ 1
Вот какой код 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")
Возможно, вам придется играть с размером текста, чтобы он выглядел хорошо, но теперь у вас есть метка для размера выборки, которая также дает ощущение перекоса.
Ответ 2
Вы можете использовать параметр 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, ")"))
Ответ 3
Чтобы получить 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 означает
матрица, каждый столбец содержит крайнюю часть нижнего нитевидного кристалла, нижнюю петлю, медианную, верхнюю петлю и крайнюю часть верхней ниши для одной группы/сюжет.
Ответ 4
Пакет gplots
предоставляет boxplot.n
, который, согласно документации, создает блокнот, аннотированный количеством наблюдений.
Ответ 5
Я выяснил обходное решение, используя пакет 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
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
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 значений), чтобы они соответствовали вам.