level<-c('3','3', '2','4+')
rate<-c(1, 1, 0.8,0.2)
rate2<-c('1', '1', '0.8','0.2')
data1<-data.frame(city,level,rate,rate2)
colnames(data1)<-c('city','level','rate','rate2')
p <- ggplot(data = data1, aes(x=city,y=rate, fill = level)) ## 图形数据
p <- p + geom_bar( stat = "identity",width = 0.4, position="stack")
p <- p + geom_text(label=paste(data1$rate*100,'%',sep = ''), colour = "white",
position=position_stack(.9), vjust=1.5)
p <- p + labs(x="",y="份额\n",title = "各省各级别分布\n", fill = "级别")
p <- p + scale_y_continuous(labels = percent, breaks = seq(0, 1, 0.2))
p <- p + theme( plot.title = element_text(size = 16, face = "bold"))
p
试试这样