在R中显示多个置信区间
我有一个数据框,其中的行对应于参数置信区间的上限和下限。如果有n行,则有n个变量。有两列,一列的置信区间下限为“下限”,另一列的置信区间上限为“上限”。行名称与变量名称相对应。像这样的在R中显示多个置信区间,r,R,我有一个数据框,其中的行对应于参数置信区间的上限和下限。如果有n行,则有n个变量。有两列,一列的置信区间下限为“下限”,另一列的置信区间上限为“上限”。行名称与变量名称相对应。像这样的 lower upper y1 7.923 9.22 y2 7.105 8.74 y3 8.185 9.54 y4 8.157 9.51 我想创建一个图,将这些置信区间显示为条形图,最好在每一端都有法兰 如果有人能告诉我这样做的好方法,我将不
lower upper
y1 7.923 9.22
y2 7.105 8.74
y3 8.185 9.54
y4 8.157 9.51
我想创建一个图,将这些置信区间显示为条形图,最好在每一端都有法兰
如果有人能告诉我这样做的好方法,我将不胜感激
谢谢
PS
bwclot
在lattice
中制作方块和胡须图:
library(lattice)
bwplot(lower+upper~var, data=dat)
有关详细信息,请参见?bwclot
和?lattice
通常,通过让plot函数为您总结dat,您可以使用R的全部功能。例如:
dat <- data.frame(
var <- sample(paste("y", 1:4, sep=""), 100, replace=TRUE),
val <- rnorm(100)
)
plot(val~factor(var), data=dat, col="cyan")
dat以下是惯用的ggplot2
解决方案。对于这种绘图,还有其他几种geom
。例如,尝试用geom\u纵横杆
替换。有关更多详细信息,请访问
cidf=data.frame(
var=c('y1','y2','y3','y4'),
下=c(7.923,7.105,8.185,8.157),
上限=c(9.22,8.74,9.54,9.51)
)
需要(ggplot2)
p1我已经找到了一种使用内置的boxplot命令来实现这一点的方法。我不得不将数据框更改为矩阵:
ci <- as.matrix(cidf)
boxplot(ci[1,],ci[2,],ci[3,],ci[4,])
ci最后,我用ggplot找到了一个很好的解决方案。感谢上面的回复
p1 <- ggplot(cidf) +
geom_errorbar(aes(x = row.names(ciddf), ymin = lower, ymax = upper), width = 0.2) +
xlab("Variables") +
coord_flip() + opts(title = "Confidence intervals for Variables")
p1
p1谢谢!上面的第一个情节看起来像我想要的,但我无法让它工作。示例代码中的“var”是什么:bwplot(下+上~var,data=dat)?@P Sellazvar
是一个用来表示数据来源的因子(来自y1、y2、y3、y4)。在你的情况下,这将是行名称。对不起,但我仍然有问题。bwplot(下+上~y1,data=cidf)求值(expr,envir,enclose)错误:找不到对象“y1”是数据框中的列名称。谢谢。不,列名是“下”和“上”。y1、y2、y3、y4等是与参数名称相对应的行名称。这两列的值是参数置信区间的上限和下限,我希望绘制这些参数。在将df转换为矩阵后,我可以使用boxplot()使其工作,但如果可能的话,我希望使用bwplot和/或ggplot。谢谢。这听起来很有希望,但根据我对另一个答案的评论,我不知道“var”在您的示例代码中代表什么。例如,我有一个名为cidf的数据帧,它有“lower”和“upper”列,每一行都是我想要显示的间隔。再次感谢。啊,现在知道了。谢谢因此,我需要向数据框中添加另一列—基本上是将行名称转换为因子,正如上面Roman Luštrik所说的。对不起,有点慢!我发现我可以只使用x=row.names(cidf)而不用创建新列。
p1 <- ggplot(cidf) +
geom_errorbar(aes(x = row.names(ciddf), ymin = lower, ymax = upper), width = 0.2) +
xlab("Variables") +
coord_flip() + opts(title = "Confidence intervals for Variables")
p1