R语言编程
20231005_ggbreak绘制断轴散点柱形图
Song Wei
2023年10月5日 22:46
418
断轴散点柱形图是一种非常实用的数据可视化工具,它结合了柱形图和散点图的优势,能够同时显示数据集的均值和原始数据点。此外,通过截断的方式,可以使差异较大的数据类型同时被合理展示、清晰观测。
软件包安装:
# 以管理员的身份运行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
北京 天气
晴
0℃