r - 如何用 sd 并排制作发散条形图
问题描述
我想用平均值绘制一个发散的条形图,但这种数据必须根据用户呈现 sd 值或错误。我建立了这个图,但我的最终版本对我不利,因为误差线位于图的两侧,我想从每个条的顶部看到。
library(ggplot2)
Id<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
average<-c(0.0747063211,-0.3095312554,-0.1676168596,0.0345693610,0.0637163317,
0.0538690955,-0.0339503837,0.4604416085,0.1488818055,0.1428970602,0.0410909991,
0.0778945537,-0.1594907397,0.1513291891,0.0037414966,0.0913500229)
Sd<-c(0.62552306,0.59959591,0.86200475,0.42053361,0.46307827,
0.18033971,0.62732196,0.78281589,0.40394317,0.47922559,0.35821862,
0.41568533,0.62758344,0.47396960,0.01449075,1.15802890)
Final<-c(TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE)
Fdata<-data.frame(Id,average,Sd,Final)
ggplot(Fdata,aes(x=reorder(Id, average), y=average, fill=Final))+
geom_bar(stat="identity") + coord_flip()+ theme(text= element_text(size=10,family="Times New Roman", color="black"))+ xlab("id")+ylab("var")+ theme(panel.background= element_blank(),panel.grid.major=element_blank(),
panel.grid.minor = element_blank())+ guides(fill=FALSE)+ geom_errorbar(aes(ymin=average-Sd, ymax=average+Sd), width=0.7)
解决方案
使用以下代码
library(ggplot2)
Id<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
average<-c(0.0747063211,-0.3095312554,-0.1676168596,0.0345693610,0.0637163317,
0.0538690955,-0.0339503837,0.4604416085,0.1488818055,0.1428970602,0.0410909991,
0.0778945537,-0.1594907397,0.1513291891,0.0037414966,0.0913500229)
Sd<-c(0.62552306,0.59959591,0.86200475,0.42053361,0.46307827,
0.18033971,0.62732196,0.78281589,0.40394317,0.47922559,0.35821862,
0.41568533,0.62758344,0.47396960,0.01449075,1.15802890)
Final<-c(TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE)
Fdata<-data.frame(Id, average, Sd, Final)
limits <- aes(
ymax = Fdata$average + (Fdata$average > 0)*Fdata$Sd,
ymin = Fdata$average - (Fdata$average < 0)*Fdata$Sd)
ggplot(Fdata, aes(x=reorder(Id, average), y=average, fill=Final))+
geom_bar(stat="identity", color = "black") + coord_flip()+
theme(text= element_text(size=10,family="Times New Roman", color="black"))+
xlab("id")+ ylab("var")+
theme(panel.background= element_blank(),panel.grid.major=element_blank(),
panel.grid.minor = element_blank()) + guides(fill=FALSE) +
geom_errorbar(limits, width=0.7)
这是你想要的吗?
推荐阅读
- android - Android Room,如果没有匹配的行,Query 会返回什么?
- vue.js - Vue - 在渲染之前异步/等待所有 axios.get
- ibm-cloud - IBM Cloud LBaaS 中的空闲连接超时限制会导致我们的应用程序出现问题
- html - 尝试将移动导航栏菜单居中
- c# - Unity 不会使用我在 GameManager 中添加的这些脚本中的任何一个来更改场景
- django - 将 Django 查询对象 values() 传递给 Django Rest Framework Serializer
- web-services - 支付处理器使用 IP 地址进行欺诈检测
- python - 如何停止在python末尾显示图片?(我显示我的代码)
- angular - Angular Ionic 中的 API 密钥
- java - 如何在 JPA 中映射这些实体