Я хотел бы вывести на печать средства и стандартные погрешности как горизонтальная столбиковая диаграмма, и я хочу отсортированное среднее.
Я нашел способ вывести горизонтальные отсортированные столбиковые диаграммы на печать с помощью решетки, но я не знаю, как добавить ошибочные метки. Следующее является моими данными и кодом R, который я придумал.
data <- structure(c(0.67, 0.67, 0.76, 0.66, 0.71, 0.6, 0.52, 0.6, 0.71, 0.76,
0.76, 0.71, 0.6, 0.61, 0.9, 0.5, 0.58, 0.84, 0.68, 0.88,
0.89, 0.96, 1, 0.95, 1, 1, 0.98, 0.78, 0.98, 1,
1, 0.99, 1, 1, 0.95, 0.92, 1, 0.91, 1, 0.87,
0.91, 0.72, 0.73, 0.55, 0.82, 0.87, 0.64, 0.75, 0.75, 1,
0.81, 0.79, 1, 0.74, 0.57, 0.84, 1, 0.95, 0.78, 0.95), .Dim = c(20L, 3L), .Dimnames = list(
c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
"12", "13", "14", "15", "16", "17", "18", "19", "20"), c("A",
"B", "C")))
means <- apply(data, 2, mean)
errors <- apply(data, 2, sd)
plot.data <- data.frame(colnames(data), means, errors)
colnames(plot.data) <- c("var", "mean", "error")
library("lattice")
plot.new()
barchart(reorder(var, mean) ~ mean, plot.data, xlim = c(0, 1))
Там какой-либо путь состоит в том, чтобы добавить ошибочные метки к этой диаграмме? В противном случае какое-либо предложение о том, как вывести на печать диаграмму, которую я хочу в R?
Заранее спасибо!
См. R-Help: Добавление полос ошибок на графики решетки
prepanel.ci <- function(x, y, lx, ux, subscripts, ...) {
x <- as.numeric(x)
lx <- as.numeric(lx[subscripts])
ux <- as.numeric(ux[subscripts])
list(xlim = range(0, x, ux, lx, finite = TRUE))
}
panel.ci <- function(x, y, lx, ux, subscripts, ...) {
x <- as.numeric(x)
y <- as.numeric(y)
lx <- as.numeric(lx[subscripts])
ux <- as.numeric(ux[subscripts])
panel.barchart(x, y, ...)
panel.arrows(lx, y, ux, y, col = 'black',
length = 0.25, unit = "native",
angle = 90, code = 3)
}
p <- barchart(reorder(var, mean) ~ mean, data=plot.data,
lx=plot.data$mean-plot.data$error,
ux=plot.data$mean+plot.data$error,
panel=panel.ci,
prepanel=prepanel.ci)
print(p)
Если это не обязательно решетка, вот простая функция, которая использует базовую функциональность R, которая поставляется с тремя аргументами: шириной полос (xv), длиной (вверх и вниз) полос погрешностей. (z) и метки столбцов на оси y (nn).
error.bars<-function(xv,z,nn){
par(las = 1)
yv <- barplot(xv,horiz = TRUE,col="cyan",xlim=c(0,(max(xv)+max(z))),names=nn,xlab=deparse(substitute(xv)))
g <- (max(yv)-min(yv))/(3*length(yv))
for (i in 1:length(yv)) {
lines(c(xv[i]+z[i],xv[i]-z[i]),c(yv[i],yv[i]))
lines(c(xv[i]+z[i],xv[i]+z[i]),c(yv[i]+g,yv[i]-g))
lines(c(xv[i]-z[i],xv[i]-z[i]),c(yv[i]+g,yv[i]-g))
}}
plot.data <- plot.data[order(plot.data$mean),] # reorder data
mean<-as.vector(plot.data$mean)
se<-as.vector(plot.data$error)
labels<-as.character(plot.data$var)
error.bars(mean,se,labels)