df<-ToothGrowth #这里用的是R自带数据Toothgrowth
df$dose<-as.factor(df$dose) #需要将dose由numeric转化为factor
dataMean<-aggregate(df$len,by=list(df$supp,df$dose),mean) #一定要加list,分组计算均值
colnames(dataMean)<-c("supp","dose","mean") #将得到的均值dataframe列命名
dataStd<-aggregate(df$len,by=list(df$supp,df$dose),sd) #分组计算标准差
colnames(dataStd)<-c("supp","dose","sd")
nd<-merge(dataMean,dataStd,by=c("supp","dose"),all=T) #将均值和标准差按照相应的分组合并
ggplot(nd,aes(x=supp,y=mean,fill=dose))+
geom_bar(position=position_dodge(),color="black",width=0.4,stat='identity')+ #stat=dentity一定要有
geom_errorbar(aes(ymin=mean,ymax=mean+sd),width=0.3,position=position_dodge(0.4))+ #这里position_dodge(0.40与上面bar宽一至
scale_fill_manual(values=c("blue","red","green"))+
theme(
legend.position = "right",
axis.title.x=element_text(size=14),
axis.title.y = element_text(size=14),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black",size=0.5), #设置坐标轴线条颜色和粗细
axis.text=element_text(color="black",size=14)
)+
xlab('Supply')+
ylab('Length')+ #这里引号单双要注意
scale_y_continuous(breaks=seq(0,30,5),limits=c(0,30),expand=c(0,0)) #expand=c(0,0)让坐标从0开始
ggplot(nd,aes(x=supp,y=mean,fill=dose))+
geom_bar(position=position_dodge(),color="black",width=0.4,stat='identity')+ #stst=dentity一定要有
geom_errorbar(aes(ymin=mean,ymax=mean+sd),width=0.3,position=position_dodge(0.4))+#这里position_dodge(0.40与上面bar宽一至
scale_fill_manual(values=c("blue","red","green"))+
theme(
legend.position = "right",
axis.title.x=element_text(size=14),
axis.title.y = element_text(size=14),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black",size=0.5),
axis.text=element_text(color="black",size=14)
)+
xlab('Supply')+
ylab('Length')+ #这里引号单双要注意
scale_y_continuous(breaks=seq(0,30,5),limits=c(0,30),expand=c(0,0))+
facet_wrap(.~dose) #在原图上加这样一句即可
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。