这篇文章主要为大家展示了“如何利用ggplot2绘制分组柱状图并进行组内分隔”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用ggplot2绘制分组柱状图并进行组内分隔”这篇文章吧。
利用ggplot2绘制分组柱状图,并进行组内分隔。
加载R包、设置数据
library('ggplot2') library('reshape2') A = c("A","B","C","D","E") B = c(90,34,56,99,15) C = c(50,20,24,70,14) dat = data.frame(A,B,C) names(dat) = c("type","sample1","sample2") dat = melt(dat,variable.name="Sample",value.name = "Num") head(dat)
绘制分组柱状图
p = ggplot(dat, aes(x = type,y = Num,fill = Sample))+ #####这部分的position = "dodge",并排肩并肩的柱状图 geom_bar(stat ="identity",width = 0.6,position = "dodge")+ scale_fill_manual(values = c("red","blue"))+ #########设定颜色 labs(x = "",y = "", title = "test")+ ############坐标标签和图片title geom_text(aes(label = dat$Num),position=position_dodge(width = 0.5),size = 5,vjust = -0.25)+ ###########设置柱子上的标签文字,文字的position_dodge(width=0.5)设置,保证分隔宽度。 guides(fill = guide_legend(reverse = F))+ ##############图例顺序反转 theme(plot.title = element_text(size = 25,face = "bold", vjust = 0.5, hjust = 0.5), ######图片title文字大小位置 legend.title = element_blank(), ##########图例名称为空 legend.text = element_text(size = 18, face = "bold"), ##########图例文字大小 legend.position = 'right', ############图例位置 legend.key.size=unit(0.8,'cm')) #############图例大小 print(p)
组内设置间隔
p = ggplot(dat, aes(x = type,y = Num,fill = Sample))+ #####这部分的position_dodge(width=0.8)大于宽width = 0.6点,可以使得分组内柱子之间有缝隙,而不是贴合。 geom_bar(stat ="identity",width = 0.6,position = position_dodge(width=0.8))+ scale_fill_manual(values = c("red","blue"))+ labs(x = "",y = "", title = "test")+ ###########文字的position设置类似bar的position geom_text(aes(label = dat$Num),position=position_dodge(width = 0.9),size = 5,vjust = -0.25)+ guides(fill = guide_legend(reverse = F))+ theme(plot.title = element_text(size = 25,face = "bold", vjust = 0.5, hjust = 0.5), legend.title = element_blank(), legend.text = element_text(size = 18, face = "bold"), legend.position = 'right', legend.key.size=unit(0.8,'cm')) print(p)
以上是“如何利用ggplot2绘制分组柱状图并进行组内分隔”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。