R语言绘制簇状柱形图

什么是簇状柱形图

如图所示,它们分别是簇状柱形图、堆积柱形图、填充比例柱形图。

顾名思义,

簇状柱形图,每组的数据,每个单独成柱,但是都簇集到一块儿;

堆积柱形图,是每组的数据都堆叠在同一个柱子上;

填充比例柱形图,是在堆积柱形图的基础上,按照比例分布的。

绘图前的数据准备

demo数据可以在https://www.r2omics.cn/res/demodata/groupBar.txt下载。

包含2个维度的数据。每一行是一簇柱子,每一列用不同的颜色图例区分。(当然也可以反过来)

X

sample2

sample1

sample3

gene1

60

100

80

gene3

80

70

80

gene2

90

90

95

gene4

75

60

80

R语言绘制簇状柱形图

# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装  install.packages("包名") 
library(tidyverse)

# 读取簇状、堆积、填充柱形图数据文件
df= read.delim("https://www.r2omics.cn/res/demodata/groupBar.txt") # 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件

# 把数据转换成ggplot常用的类型(长数据)
df = df %>%
  pivot_longer(-1,names_to = "Sample",values_to = "Value")

# 绘图
ggplot(df, aes(x=factor(X,levels =unique(X)),  # 转化为因子,目的是显示顺序与文件顺序相同,否则按照字母顺序排序
               y=Value, 
               fill=factor(Sample,levels = unique(Sample)), 
               ))+
  geom_bar(
    stat="identity",
    position=position_dodge(0.9),
    width=0.8
  )+
  # 文字标签
  geom_text(aes(label=Value),
            position=position_dodge(0.9),
            vjust=-0.1
            )+
    labs(
      x="",   # 调整x轴名称
      y="",   # 调整y轴名称
      fill="" # 调整图例名称
    )+
  scale_fill_brewer(palette = "Set2")+ # 配色方案
  theme_bw()