本文介绍通过R的ggplot2包 绘制箱式图,并添加各组比较的显著性结果。
1 收集数据
2 绘制箱式图
# 加载数据处理和绘图所需的R包
library(dplyr)
library(ggpubr)
library(ggplot2)
# 设置R的工作目录,确保可以找到并读取CSV文件
setwd("C:/Users/jiayo/Desktop/jupyter notebook")
# 从CSV文件中读取数据,存储在名为`data`的数据框中
data <- read.csv("distance_ca_center.csv")
# 创建ggplot图形对象`g1`
g1 <- ggplot(data, aes(x=vp, y=CA_distance)) +
# 添加箱线图的误差条
stat_boxplot(geom="errorbar", width=0.1, size=0.8) +
# 添加箱线图,根据`vp`变量进行填充,忽略异常值的颜色
geom_boxplot(aes(fill=vp), outlier.color=NA) +
# 添加点图,并根据`vp`变量进行填充,设置点的形状、大小、透明度和宽度
geom_jitter(aes(fill=vp), shape=21, size=2.5, alpha=0.6, width=0.3) +
# 手动设置填充颜色的值
scale_fill_manual(values = c("#EE553D", "#FFA45C", "#FFE094", "#5679BA")) +
# 设置图形主题为经典主题
labs(x="Capsid protein", y="Distance from CA to center")+
theme_light() +
# 设置图例位置为无,设置轴文本的大小和x轴文本的旋转角度
theme(legend.position="none",
axis.text=element_text(size=10, color="black"),
axis.text.x=element_text(angle=0),
axis.title=element_text(size=15, color="black"))
# 显示第一个图形
g1
# 创建一个比较均值的列表
g_col <- list(c("VP4", "VP1"), c("VP4", "VP2"), c("VP4", "VP3"))
# 在第一个图形的基础上添加均值比较,标签为p.signif,使用t.test方法
g2 <- g1 + stat_compare_means(comparisons = g_col,
label = "p.signif",
method = "t.test") +
# 设置图例文本的大小
theme(legend.text = element_text(size = 12))
# 显示第二个图形
g2
# 打开PDF文件
pdf("output_box.pdf", width=8, height=5)
# 将图形绘制到PDF文件
print(g2)
# 关闭PDF文件
dev.off()
当数据服从正态分布,方差齐时,用 stat_compare_means函数比较均值,检验方法为 t检验;若不满足,可用 stat_compare_medians函数替代,用wilcox非参数检验比较中位数。
# 创建一个比较中位数的列表
g_col <- list(c("VP4", "VP1"), c("VP4", "VP2"), c("VP4", "VP3"))
# 在第一个图形的基础上添加中位数比较,标签为p.signif,使用wilcox.test方法(非参数检验)
g2 <- g1 + stat_compare_medians(comparisons = g_col,
label = "p.signif",
method = "wilcox.test") +
# 设置图例文本的大小
theme(legend.text = element_text(size = 12))
# 显示第二个图形
g2