在条形图中添加值,重新排序在ggplot 2中的水平分组条形图中删除网格

时间:2016-04-11 16:15:20

标签: r ggplot2 bar-chart

嗨,这是我的假数据:

 year<-c(rep(2010,3),rep(2011,3),rep(2012,3))
 value<-rnorm(9,10,5)
 nation<-rep(c("a","b","c"),3)
 fake<-data.frame(year,value,nation)

这是我已有的代码:

ggplot(data=fake, aes(x=year, y=value, fill=nation)) +
geom_bar(stat="identity",width=0.5, position=position_dodge())+
scale_fill_manual(values=c("#006600", "#007f00","#009900"),name="Experimental\nCondition")+
scale_x_continuous(breaks=seq(2010,2015,1),name="year")+
scale_y_continuous(breaks=F,name="value")+
theme(legend.title=element_blank(),plot.title = element_text(lineheight=0.9, face="bold"))+
ggtitle("arbitrary nation values in arbitrary years")+
coord_flip()

我想要做的是在每个条形图中添加值,在背景中删除网格,并从最高值到最低值重新排序每一年,因此条形图的顺序在不同年份会有所不同。也许最后一件事是左下角的小零点。在图的第一个版本中,X轴上有数字,但是我想要删除它们,所以我做了但零持续。它可以在一些图形编辑器中擦除它,但我想它可以通过代码完成。

非常感谢你的每一个建议

1 个答案:

答案 0 :(得分:0)

我几乎得到了你想要的东西,我会发给你这个代码。您可以使用命令reorder()执行某些操作,以按年份对条形图重新排序。

ggplot(data=fake, aes(x=year, y=value, fill=nation)) +
  geom_bar(stat="identity",width=0.5, position=position_dodge())+
  scale_fill_manual(values=c("#006600", "#007f00","#009900"),name="Experimental\nCondition")+
  scale_x_continuous(breaks=seq(2010,2015,1),name="year")+
  scale_y_continuous(breaks=F,name="value")+
  theme(legend.title=element_blank(),plot.title = element_text(lineheight=0.9, face="bold"))+
  geom_text(aes(label = round(value, digits=2)), size = 5, position = position_dodge(width = 0.5), hjust=1)+
  ggtitle("arbitrary nation values in arbitrary years")+
  coord_flip()+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))

enter image description here