首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Geom_violin + geom_error_bar

Geom_violin + geom_error_bar
EN

Stack Overflow用户
提问于 2019-07-17 19:38:51
回答 1查看 213关注 0票数 0

我有3个物体的500个估计值。我的目标是绘制一个小提琴图,以了解估计的分布,但同时,我希望可视化标准误差(以另一种方式评估)、平均值估计和真实值。

这就是我所拥有的:

代码语言:javascript
复制
object1 <- rnorm(500,mean=1,sd=0.1)
object2 <- rnorm(500,mean=2,sd=0.1)
object3 <- rnorm(500,mean=3,sd=0.1)

estimations <- data.frame(object1,object2,object3)
colnames(estimations) <- 1:3

SEframe <- data.frame()
SEframe <- rbind(SEframe,c(1,1,mean(object1),0.1))
SEframe <- rbind(SEframe,c(2,2,mean(object2),0.15))
SEframe <- rbind(SEframe,c(3,3,mean(object3),0.25))

colnames(SEframe) <- c("ID","True.value","Estimated.value","SE")

estMelted <- melt(estimations)
estMelted$variable <- as.factor(estMelted$variable)

p <- ggplot(estMelted, aes(x=variable, y=value)) + 
  geom_violin()

现在我希望在图上有一条代表真实值的线,以及一个用于估计和SE的误差条。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 19:51:53

您可以随时为其他层指定另一个数据集。在这里,我们添加了一个geom_errorbar层和一个geom_point层,这两个层都用于data=SEframe

代码语言:javascript
复制
p + 
  geom_errorbar(data=SEframe, aes(x=ID, 
             ymin=Estimated.value - SE, 
             ymax=Estimated.value+SE), inherit.aes=F) + 
  geom_point(data=SEframe, aes(x=ID, y=Estimated.value))

注意inherit.aes=FALSE的用法。原因如下:默认情况下,geom_errorbar将从ggplot()继承映射,但该映射使用名为value的列。即使geom_errorbar不需要它(因为它不需要y),它仍然会被继承并导致问题。因此,我们指定不应继承aes。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57074955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档