Chenrui的个人博客分享 http://blog.sciencenet.cn/u/CR15928558859

博文

R 语言绘制簇状条形图及其美化

已有 1520 次阅读 2023-3-31 11:26 |个人分类:R语言学习心得|系统分类:科研笔记

R 语言绘制簇状条形图及其美化

                                                         参考书籍:R数据可视化手册

1.使用ggplot()和geom_bar()函数绘制基础簇状条形图

library(gcookbook)

ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

geom_bar(position = "dodge",stat ="identity" )


原始数据

基础簇状图

image.png

Rplot.jpeg

备注:#其中cultivardata是分类变量,weight是数值

2. 使用scale_fill_brewer()scale_fill_manual()函数着色

library(gcookbook)

P1<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",colour="black" )+

  scale_fill_brewer(palette="Greens")

# scale_fill_brewer(palette=1)

# scale_fill_brewer(palette="Set2")

P1

P2<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",colour="black" )+

 # scale_fill_manual(values =c("#669933","#FFCC66"))

#scale_fill_manual(values =c("420","414"))

scale_fill_manual(values =c("lightpink1","lightsalmon"))

P2

scale_fill_brewer

(palette="Greens")

scale_fill_manual(values   =c("lightpink1","lightsalmon"))

2.jpeg

3.jpeg

备注:#添加colour修改为黑色边框,使用scale_fill_brewer()scale_fill_manual()函数

#注意颜色的映射设定在aes()内部,而颜色重新设置在aes()外部完成;此外,scale_fill_brewer()有三种颜色设置scale_fill_brewer(palette="Greens")scale_fill_brewer(palette=1)scale_fill_brewer(palette="Set2"),而scale_fill_manual(values =c("#669933","#FFCC66"))scale_fill_manual(values =c("420","414"))scale_fill_manual(values =c("lightpink1","lightsalmon")),选择任何一种函数时可以任选一种方式即可。

3.使用geom_bar()函数修改条形宽度和条形间距

library(gcookbook)

P3<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=1,colour="black" )+

  scale_fill_brewer(palette="Greens")

P3

 

P4<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=0.5,colour="black" )+

  scale_fill_brewer(palette="Greens")

P4

 

                  position_dodge

                等于width值 P3

                 position_dodge

              大于width P4

4.jpeg

5.jpeg

备注:簇状条形图默认间距为0,如果想增加条形的间距,需要满足position_dodge值大于width值,而position_dodge(0.9)相当于position="dodge"colour是设置边框颜色。

4.使用geom_text()函数添加数据标签

library(gcookbook)

P5<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=0.5,colour="black"  )+

  geom_text(aes(label=Weight),vjust=1.5,colour="black",position=position_dodge(0.9),size=3)+

  scale_fill_brewer(palette="Greens")

P5

#在条形图顶端上方

P6<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=0.5,colour="black"  )+

  geom_text(aes(label=Weight),vjust=-0.5,colour="black",position=position_dodge(0.5),size=3)+

scale_fill_brewer(palette="Greens")

P6

#在簇状图顶端下方

P7<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=0.5,colour="black"  )+

  geom_text(aes(label=Weight),vjust=1.5,colour="black",position=position_dodge(0.5),size=3)+

  scale_fill_brewer(palette="Greens")

P7

P5

P6

P7

6.jpeg

7.jpeg

8.jpeg

备注:P5P6, P7不同时因为geom_text ()函数中vjust参数(正负值)与主要调整标签的上下位置有关,而position参数的大小与标签的中间左右对齐有关。

5.使用geom_text()函数或ylim()可调整Y轴的范围

#如果标签超过绘图区域,因此考虑Y轴的范围调整

library(gcookbook)

P8<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=0.5,colour="black"  )+

  geom_text(aes(y=Weight+0.1,label=Weight),vjust=-0.3,colour="black",position=position_dodge(0.5),size=3)+

  scale_fill_brewer(palette="Greens")

P8

 

#Y轴上限变大

P9<-ggplot(cabbage_exp,aes(x=Date,y=Weight,fill=Cultivar))+

  geom_bar(position = "dodge",stat ="identity",width=0.5,colour="black"  )+

  geom_text(aes(label=Weight),vjust=-0.3,colour="black",position=position_dodge(0.5),size=3)+

  scale_fill_brewer(palette="Greens")+

  ylim(0,max(cabbage_exp$Weight)*1.05)

P9

                      P8

                   P9

9.jpeg


10.jpeg


 

备注:调整Y轴的范围可根据实际情况而定。

自我总结:

绘制簇状条形图及其美化,主要有以下几个函数:

ggplot(data,aes(x,y,fill)

geom_bar(position = "dodge",stat ="identity" , width=1, colour="black" )

geom_text(aes(label=Weight),vjust=1.5,colour="black",position=position_dodge(0.9),size=3)

scale_fill_brewer(palette="Greens")scale_fill_manual(values =c("lightpink1","lightsalmon"))

geom_text(aes(label=Weight+0.1),vjust=1.5,colour="black",position=position_dodge(0.9),size=3)geom_text(aes(label=Weight),vjust=0.3,colour="black",position=position_dodge(0.5),size=3)+

ylim(0,max(cabbage_exp$Weight)*1.05)

以上是我对簇状条形图的总结,望大家批评和指正,我们一起学习。

 




https://blog.sciencenet.cn/blog-3511394-1382456.html

上一篇:R 语言绘制简单条形图
下一篇:R 语言绘制频度条形图及其美化
收藏 IP: 218.6.128.*| 热度|

1 郑永军

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-25 08:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部