6

平均値と標準誤差を横棒グラフとしてプロットしたいのですが、平均値を並べ替えたいと思います。

ラティスを使用して並べ替えられた横棒グラフをプロットする方法を見つけましたが、エラー マークを追加する方法がわかりません。以下は私のデータと私が思いついた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で必要なチャートをプロットする方法に関する提案はありますか?

前もって感謝します!

4

2 に答える 2

5

ラティスである必要がない場合は、R の基本機能を使用する単純な関数を次に示します。この関数には、バーの幅 (xv)、エラー バーの長さ (上下) (z) の 3 つの引数が指定されます。 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)

代替テキスト

于 2010-03-04T20:26:34.647 に答える