我想使用ggplot2绘制条形图,以便条形具有相同的宽度。 我有以下数据集。ggplot2 barplot相同宽度
sexratio=c("0%male","0%male","0%male","0%male","25%male","25%male","50%male","50%male" ,"75%male","75%male","100%male","100%male","100%male", "100%male")
Trainsize=c("Ts130","Ts260","Ts520","Ts1040","Ts130", "Ts1040","Ts130", "Ts1040", "Ts130", "Ts1040","Ts130", "Ts260", "Ts520", "Ts1040")
Dm1=c(354.7015, 362.6982, 369.8013, 380.7233, 363.2208, 415.8980, 367.2899, 413.7292, 365.1060, 409.1913, 366.9871, 377.3490, 389.0739, 400.5590)
mydata=data.frame(Trainsize,sexratio,Dm1)
#Reorder the fators
mydata$sexratio<−factor(mydata$sexratio,levels(mydata$sexratio)[c(2:4,1)])
mydata$Trainsize<- factor(mydata$Trainsize,levels(mydata$Trainsize)[c(2:4,1)])
我用下面的代码绘制的情节,但要注意,棒材Ts260和Ts520的宽度都较大。
p2<- ggplot(mydata, aes(x=Trainsize, y=Dm1, fill=sexratio)) +geom_bar(stat="identity", color="black",position=position_dodge()) +
geom_errorbar(aes(ymin=Dm1-10, ymax=Dm1+10), width=.2,position=position_dodge(.9))
因此,我包括NA为Ts260和Ts520的缺失值,并重绘该图。
require(utils)
dat<-expand.grid(sexratio= c("25%male","50%male","75%male"), Trainsize= c("Ts260","Ts520"))
dat$Dm1<- NA
mydata<- rbind(mydata,dat)
p2<- ggplot(mydata, aes(x=Trainsize, y=Dm1, fill=sexratio)) +
geom_bar(stat="identity", color="black",
position=position_dodge()) +
geom_errorbar(aes(ymin=Dm1-10, ymax=Dm1+10), width=.2,
position=position_dodge(.9))
现在的问题是如何减少Ts260,Ts520之间0%男性和100%男性之间的空间。
或者我如何绘制因子TS的水平之间的垂直线;即在Ts130,Ts260,Ts520,Ts1040处有四条垂直线。
是的,这就是我想要的。感谢Setye,致以最诚挚的问候 – setye