如何并排使用 sd 制作发散条形图
How to do a divergent barchart with sd by side
我想绘制一个带有平均值的发散条形图,但这种数据必须根据用户呈现 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)
这是你想要的吗?
我想绘制一个带有平均值的发散条形图,但这种数据必须根据用户呈现 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)
这是你想要的吗?