R语言编程

20231005_ggbreak绘制断轴散点柱形图

Song Wei Song Wei 2023年10月5日 22:46
418
20231005_ggbreak绘制断轴散点柱形图

断轴散点柱形图是一种非常实用的数据可视化工具,它结合了柱形图和散点图的优势,能够同时显示数据集的均值和原始数据点。此外,通过截断的方式,可以使差异较大的数据类型同时被合理展示、清晰观测。


软件包安装:

# 以管理员的身份运行Rstudio
#R 4.3.1
#Rtools 4.3
#Biocmanager 3.17 
#相关R包的下载与载入:
install.packages('ggbreak')
library(ggplot2)
library(ggbreak)
library(cols4all)


测试数据:

#载入测试数据:
dt <- read.csv('test_dt.csv',header = T)
> dt
     id        exp    group
1  Rep1   1.000000   16D 0d
2  Rep2   1.000000   16D 0d
3  Rep1   1.379839   16D 3d
4  Rep2   1.311981   16D 3d
5  Rep1   1.430467   16D 7d
6  Rep2   1.458619   16D 7d
7  Rep1   3.040000  16D 10d
8  Rep2   2.288298  16D 10d
9  Rep1  10.863910  16D 14d
10 Rep2  10.461770  16D 14d
11 Rep1  11.765560  16D 21d
12 Rep2  15.612380  16D 21d
13 Rep1  43.806586 16D 28d 
14 Rep2  48.099620 16D 28d 
15 Rep1  47.151900  42DENZR
16 Rep2  66.949440  42DENZR
17 Rep1 837.709200      NCI
18 Rep2 586.007000      NCI


#计算均值:
aov_mean <- aggregate(exp ~ group, data = dt, FUN = mean)
aov_mean


柱形图绘制:

#指定绘图顺序:
aov_mean$group <- factor(aov_mean$group, levels = unique(dt$group))
#使用均值绘制柱形图:
p1 <- ggplot() +
  geom_bar(data = aov_mean,
           mapping = aes(x = group, y = exp, fill = group),
           stat = 'identity')
p1




柱形图添加散点:

#使用原始数据叠加散点:
p2 <- p1 +
  geom_point(data = dt,
             mapping = aes(x = group, y = exp),
             color = '#9c9b9b',
             shape = 21,
             size = 2.2,
             stroke = 1,
             position = 'jitter')
p2


#配色挑选:
c4a_gui()
mycol <- c4a('bold', 9)
p3 <- p2 +
scale_fill_manual(values = rev(mycol)) + #填充颜色
labs(x = "Treatment", #标签修改
y = "ASCL1 expression") +
theme_classic() + #主题调整
theme(legend.position = 'none',
axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))
p3




添加断点:

由于数据差距过大,通过常规方式绘制我们没法观测到低表达的数据部分,因此,下面我们使用ggbreak包为y轴添加断点。

#添加两层截断点:
p4 <- p3 +
  scale_y_break(c(20, 40)) +
  scale_y_break(c(80, 600))
p4

#对子图进行缩放,调整显示比例:
p5 <- p3 +
  scale_y_break(c(20, 40), scales = 2.5) +
  scale_y_break(c(80, 600), scales = 0.8)
p5

#调整截断间空格的宽度及y轴子图标签的自定义:
p6 <- p3 +
  scale_y_break(c(20, 40), scales = 2.5,space = 0.28) + #空格稍微加宽
  scale_y_break(c(80, 570), scales = 0.8, ticklabels = c(600,700,850))
p6



标签: rstudio
Weather
北京 天气
0℃

网站浏览