library(ggplot2)Warning: package 'ggplot2' was built under R version 4.3.2
library(ggsignif)Warning: package 'ggsignif' was built under R version 4.3.2
ggsignif以下是使用ggplot2和ggsignif库创建带有统计学标记的箱线图的示例。首先,请确保你已经安装了这些包,如果没有,可以使用以下命令安装:
install.packages("ggplot2")
install.packages("ggsignif")接下来,加载必要的包:
library(ggplot2)Warning: package 'ggplot2' was built under R version 4.3.2
library(ggsignif)Warning: package 'ggsignif' was built under R version 4.3.2
现在假设你有一些数据集,我们将使用内置的mtcars数据集进行演示。我们将以气缸数(cyl)作为X轴变量,以每加仑英里数(mpg)作为Y轴变量绘制箱线图,并在不同气缸组别之间添加统计学显著性标记。
# 使用mtcars数据集
data(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl) # 将cyl转换为因子,以便绘制分类箱线图
mtcars mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
# 创建箱线图
p <- ggplot(mtcars, aes(x=cyl, y=mpg)) +
geom_boxplot() +
labs(x="Number of Cylinders", y="Miles per Gallon")
# 添加统计显著性标记
p + geom_signif(comparisons = list(c("4", "6"), c("6", "8"), c("4", "8")),
map_signif_level=TRUE,
y_position=c(35, 38, 41)) # 为每个比较手动设置y坐标位置Warning in wilcox.test.default(c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, :
cannot compute exact p-value with ties
Warning in wilcox.test.default(c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, :
cannot compute exact p-value with ties
Warning in wilcox.test.default(c(21, 21, 21.4, 18.1, 19.2, 17.8, 19.7), :
cannot compute exact p-value with ties
在这段代码中:
geom_boxplot() 创建了基本的箱线图。
geom_signif() 添加了统计学显著性标记,comparisons参数是一个列表,定义了需要比较的组别。
map_signif_level=TRUE 自动在图表上标注显著性水平。
y_position 参数用于设置每个显著性标记的y轴位置。你需要根据你的数据点和图表的具体情况来调整这些值,以确保标记不会重叠并且清晰可见。
上面的代码会创建一个包含四缸、六缸和八缸汽车的箱线图,并在这些组别间进行统计学显著性测试,然后在图上显示显著性标记。这些显著性标记通常是星号(*),数量取决于p值的大小。
如果显著性注释依旧重叠,可能需要进一步调整y坐标的值,或者可能需要调整图表的y轴限制,以便为显著性注释提供更多的空间。这可以通过添加 ylim() 函数到你的ggplot对象来实现。例如:
p + ylim(0, 45) # 根据需要调整这些值以为显著性标记腾出空间ggpubrggpubr 是一个扩展包,它提供了一个简便的方式来添加统计注释。它包含stat_compare_means函数,用于在箱线图上添加两组或多组之间的比较。首先确保你已经安装了 ggpubr 包。如果还没有安装,可以使用以下命令安装:
install.packages("ggpubr")接下来,加载必要的包:
library(ggplot2)
library(ggpubr)Warning: package 'ggpubr' was built under R version 4.3.2
现在,让我们继续使用mtcars数据集来创建一个箱线图并添加统计学比较。
# 转换气缸数为因子类型以便进行分组
mtcars$cyl <- as.factor(mtcars$cyl)
# 创建箱线图并添加统计比较
p <- ggplot(mtcars, aes(x=cyl, y=mpg, fill=cyl)) +
geom_boxplot() +
labs(x="Number of Cylinders", y="Miles per Gallon") +
theme_minimal()
# 使用stat_compare_means添加t检验的统计比较
# method参数决定了使用哪种统计检验,默认为t检验
p + stat_compare_means()默认情况下,stat_compare_means()会执行t检验并将比较结果添加到图中。如果你有多个分组并希望比较所有组合,可以使用参数comparisons来指定哪些组需要进行比较。例如,比较四缸和八缸汽车:
p + stat_compare_means(comparisons = list(c("4", "8")))Warning in wilcox.test.default(c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, :
cannot compute exact p-value with ties
如果你想执行不同类型的统计检验,如 ANOVA,可以这样:
p + stat_compare_means(method = "anova")请注意,ANOVA适用于比较两个以上的样本均数是否有显著性差异。如果只有两个组别,应该使用t检验或类似的检验。
进行两两比较:
# 定义两两比较的组合
comparisons <- list(c("4", "6"), c("6", "8"), c("4", "8"))
# 使用stat_compare_means添加t检验的统计比较
# 添加comparisons参数进行指定的两两比较
p + stat_compare_means(comparisons=comparisons,
label = "p.signif") # 显示显著性水平标签Warning in wilcox.test.default(c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, :
cannot compute exact p-value with ties
Warning in wilcox.test.default(c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, :
cannot compute exact p-value with ties
Warning in wilcox.test.default(c(21, 21, 21.4, 18.1, 19.2, 17.8, 19.7), :
cannot compute exact p-value with ties
ggpubr提供的stat_compare_means()函数是非常灵活的,可以根据你的数据和需要进行调整。通过阅读该函数的帮助文档(在R中运行?stat_compare_means),你可以了解到更多的自定义选项,如显著性水平的调整、标签的自定义等。
首先,我们需要一个数据集,其中包含至少一个分类变量和一个数值变量。在这个示例中,我们将使用ToothGrowth数据集,它是R中的内置数据集,包含维生素C对豚鼠牙齿生长影响的数据。
library(ggplot2)
# 创建示例数据
set.seed(123)
df <- data.frame(
group = rep(c("Group 1", "Group 2"), each = 40),
subgroup = rep(c("Subgroup A", "Subgroup B"), times = 40),
value = c(rnorm(20, mean = 100, sd = 15), rnorm(20, mean = 110, sd = 15),
rnorm(20, mean = 100, sd = 15), rnorm(20, mean = 130, sd = 15))
)
# 用ggplot2画分组箱线图
p <- ggplot(df, aes(x = group, y = value, fill = subgroup)) +
geom_boxplot(position = position_dodge(0.8)) + # position_dodge用于避免箱子重叠
theme_minimal() +
labs(x = "Group", y = "Value", fill = "Subgroup") +
scale_fill_brewer(palette = "Pastel1")
p为了在Group 1组内进行显著性分析并添加显著性标记,你可以使用ggpubr包中的stat_compare_means函数。这个函数可以直接在ggplot2对象上添加显著性测试的结果。下面是如何在你的代码中实现这一点:
library(ggplot2)
library(ggpubr)
# 创建示例数据
set.seed(123)
df <- data.frame(
group = rep(c("Group 1", "Group 2"), each = 40),
subgroup = rep(c("Subgroup A", "Subgroup B"), times = 40),
value = c(rnorm(20, mean = 100, sd = 15), rnorm(20, mean = 110, sd = 15),
rnorm(20, mean = 100, sd = 15), rnorm(20, mean = 130, sd = 15))
)
# 用ggplot2画分组箱线图
p <- ggplot(df, aes(x = group, y = value, fill = subgroup)) +
geom_boxplot(position = position_dodge(0.8)) + # position_dodge用于避免箱子重叠
theme_minimal() +
labs(x = "Group", y = "Value", fill = "Subgroup") +
scale_fill_brewer(palette = "Pastel1")
# 添加Group 1和Group 2的显著性标记
# 使用group和subgroup进行分组,进行t-test比较
p + stat_compare_means(
aes(label = ..p.format.., group = interaction(group, subgroup)),
method = "t.test",
label.y = c(180, 180), # 可以通过调整这个值来改变标签的垂直位置
label = "p.signif" # 显示显著性水平标签
)在这个代码中,label.y是手动设置的y轴位置,用于显示统计标记。你可能需要根据你的数据的实际范围调整这个值以避免标记重叠。
interaction(group, subgroup)确保了在每个主要组别内部的子组别间进行比较。
..p.format..自动格式化p值。
devtools::session_info()─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.3.1 (2023-06-16 ucrt)
os Windows 11 x64 (build 22621)
system x86_64, mingw32
ui RTerm
language (EN)
collate Chinese (Simplified)_China.utf8
ctype Chinese (Simplified)_China.utf8
tz Asia/Hong_Kong
date 2023-11-08
pandoc 3.1.9 @ C:/Users/HANWAN~1/AppData/Local/Pandoc/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.3.0)
backports 1.4.1 2021-12-13 [1] CRAN (R 4.3.0)
broom 1.0.5 2023-06-09 [1] CRAN (R 4.3.2)
cachem 1.0.8 2023-05-01 [1] CRAN (R 4.3.1)
callr 3.7.3 2022-11-02 [1] CRAN (R 4.3.1)
car 3.1-2 2023-03-30 [1] CRAN (R 4.3.2)
carData 3.0-5 2022-01-06 [1] CRAN (R 4.3.2)
cli 3.6.1 2023-03-23 [1] CRAN (R 4.3.1)
colorspace 2.1-0 2023-01-23 [1] CRAN (R 4.3.1)
crayon 1.5.2 2022-09-29 [1] CRAN (R 4.3.1)
devtools 2.4.5 2022-10-11 [1] CRAN (R 4.3.2)
digest 0.6.33 2023-07-07 [1] CRAN (R 4.3.1)
dplyr 1.1.3 2023-09-03 [1] CRAN (R 4.3.2)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.3.1)
evaluate 0.21 2023-05-05 [1] CRAN (R 4.3.1)
fansi 1.0.4 2023-01-22 [1] CRAN (R 4.3.1)
farver 2.1.1 2022-07-06 [1] CRAN (R 4.3.1)
fastmap 1.1.1 2023-02-24 [1] CRAN (R 4.3.1)
fs 1.6.3 2023-07-20 [1] CRAN (R 4.3.1)
generics 0.1.3 2022-07-05 [1] CRAN (R 4.3.1)
ggplot2 * 3.4.4 2023-10-12 [1] CRAN (R 4.3.2)
ggpubr * 0.6.0 2023-02-10 [1] CRAN (R 4.3.2)
ggsignif * 0.6.4 2022-10-13 [1] CRAN (R 4.3.2)
glue 1.6.2 2022-02-24 [1] CRAN (R 4.3.1)
gtable 0.3.3 2023-03-21 [1] CRAN (R 4.3.1)
htmltools 0.5.5 2023-03-23 [1] CRAN (R 4.3.1)
htmlwidgets 1.6.2 2023-03-17 [1] CRAN (R 4.3.1)
httpuv 1.6.11 2023-05-11 [1] CRAN (R 4.3.1)
jsonlite 1.8.7 2023-06-29 [1] CRAN (R 4.3.1)
knitr 1.43 2023-05-25 [1] CRAN (R 4.3.1)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.3.0)
later 1.3.1 2023-05-02 [1] CRAN (R 4.3.1)
lifecycle 1.0.3 2022-10-07 [1] CRAN (R 4.3.1)
magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.3.1)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.3.1)
mime 0.12 2021-09-28 [1] CRAN (R 4.3.0)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.3.1)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.3.1)
pillar 1.9.0 2023-03-22 [1] CRAN (R 4.3.1)
pkgbuild 1.4.2 2023-06-26 [1] CRAN (R 4.3.1)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.3.1)
pkgload 1.3.2.1 2023-07-08 [1] CRAN (R 4.3.1)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.3.1)
processx 3.8.2 2023-06-30 [1] CRAN (R 4.3.1)
profvis 0.3.8 2023-05-02 [1] CRAN (R 4.3.1)
promises 1.2.0.1 2021-02-11 [1] CRAN (R 4.3.1)
ps 1.7.5 2023-04-18 [1] CRAN (R 4.3.1)
purrr 1.0.2 2023-08-10 [1] CRAN (R 4.3.2)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.3.1)
RColorBrewer 1.1-3 2022-04-03 [1] CRAN (R 4.3.0)
Rcpp 1.0.11 2023-07-06 [1] CRAN (R 4.3.1)
remotes 2.4.2.1 2023-07-18 [1] CRAN (R 4.3.1)
rlang 1.1.1 2023-04-28 [1] CRAN (R 4.3.1)
rmarkdown 2.23 2023-07-01 [1] CRAN (R 4.3.1)
rstatix 0.7.2 2023-02-01 [1] CRAN (R 4.3.2)
rstudioapi 0.15.0 2023-07-07 [1] CRAN (R 4.3.1)
scales 1.2.1 2022-08-20 [1] CRAN (R 4.3.1)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.3.1)
shiny 1.7.4.1 2023-07-06 [1] CRAN (R 4.3.1)
stringi 1.7.12 2023-01-11 [1] CRAN (R 4.3.0)
stringr 1.5.0 2022-12-02 [1] CRAN (R 4.3.1)
tibble 3.2.1 2023-03-20 [1] CRAN (R 4.3.1)
tidyr 1.3.0 2023-01-24 [1] CRAN (R 4.3.1)
tidyselect 1.2.0 2022-10-10 [1] CRAN (R 4.3.1)
urlchecker 1.0.1 2021-11-30 [1] CRAN (R 4.3.1)
usethis 2.2.2 2023-07-06 [1] CRAN (R 4.3.1)
utf8 1.2.3 2023-01-31 [1] CRAN (R 4.3.1)
vctrs 0.6.3 2023-06-14 [1] CRAN (R 4.3.1)
withr 2.5.0 2022-03-03 [1] CRAN (R 4.3.1)
xfun 0.39 2023-04-20 [1] CRAN (R 4.3.1)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.3.1)
yaml 2.3.7 2023-01-23 [1] CRAN (R 4.3.0)
[1] C:/Users/Han Wang/AppData/Local/R/win-library/4.3
[2] C:/Program Files/R/R-4.3.1/library
──────────────────────────────────────────────────────────────────────────────