相关性散点图

基本散点图

本笔记记录了一个使用ggplot2ggpubr包创建带有线性拟合曲线和相关系数及p值标注的散点图的示例。如果你还没有安装ggpubr包,请先安装它。

install.packages("ggpubr")

加载必要的包:

library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.3.2
library(ggpubr)
Warning: package 'ggpubr' was built under R version 4.3.2

生成一些示例数据:

# 假设我们有两个变量x和y
set.seed(123)  # 设置种子以便结果可复现
x <- rnorm(100)
y <- 0.5*x + rnorm(100)
data <- data.frame(x=x, y=y)

创建一个散点图,并添加拟合线和相关性系数标注:

ggplot(data, aes(x=x, y=y)) + 
  geom_point() +  # 添加散点
  geom_smooth(method='lm', color='blue', formula = y ~ x) +  # 添加线性拟合曲线
  stat_cor(method = "pearson", label.x = 1, label.y = 4)  # 添加相关性系数标注

在这里:

  • geom_point() 添加了散点图。

  • geom_smooth() 添加了线性拟合曲线,method='lm' 表示使用线性模型进行拟合,color='blue' 定义了曲线的颜色,formula = y ~ x 定义了模型的公式。

  • stat_cor()ggpubr包提供的函数,用于计算并添加相关性系数(Pearson方法)和p值。label.xlabel.y参数定义了标注的位置。

这段代码将生成一个散点图,上面有蓝色的线性拟合曲线,以及在指定位置显示的相关系数和p值。请注意,label.xlabel.y的值可能需要根据您的数据范围进行调整。

美化

要美化图表并在散点图的边缘添加表示X和Y轴变量分布的直方图,可以使用ggExtra::ggMarginal函数。以下是整个过程的代码示例,包括一些额外的美化设置:

首先,你需要安装并加载ggExtra包,如果你还没安装,可以使用以下命令:

install.packages("ggExtra")

然后加载必要的包:

library(ggplot2)
library(ggExtra)
Warning: package 'ggExtra' was built under R version 4.3.2
library(ggpubr)

继续使用之前创建的数据data来绘图,并应用一些ggplot2的美化设置:

# 创建基本的散点图
p <- ggplot(data, aes(x=x, y=y)) + 
  geom_point(color = "#00BFC4") +  # 设定散点的颜色
  geom_smooth(method='lm', color='red', fill="#FFCCCC") +  # 添加线性拟合曲线,不显示置信区间
  theme_minimal() +  # 使用简洁的主题
  theme(text = element_text(size = 12)) +  # 设定文字大小
  stat_cor(method = "pearson", label.x = 1, label.y = 4) +  # 添加相关性系数标注
  labs(x = "X轴变量", y = "Y轴变量")  # 添加轴标签

# 使用ggExtra添加边缘直方图
ggMarginal(p, type = "histogram", fill = "blue")
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ x'

在这里:

  • theme_minimal() 应用了一个简洁的主题,使图表看起来更为现代和简洁。

  • theme(text = element_text(size = 12)) 设置了全局的文本大小。

  • labs(x = "X轴变量", y = "Y轴变量") 设置了轴的标签。

  • ggMarginal() 函数添加了边缘的直方图,type = "histogram" 参数指定了要添加的边缘图类型,fill = "blue" 设定了直方图的填充颜色。

根据你的数据和显示设备的不同,你可能需要调整stat_cor中的label.xlabel.y参数以确保标签在图上的位置合适。此外,由于图形元素可能会互相重叠,所以你可能还需要调整geom_pointgeom_smooth中的一些参数来达到最佳的视觉效果。

工作环境

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)
 ggExtra     * 0.10.1  2023-08-21 [1] CRAN (R 4.3.2)
 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)
 lattice       0.21-8  2023-04-05 [2] 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)
 Matrix        1.6-1.1 2023-09-18 [1] CRAN (R 4.3.2)
 memoise       2.0.1   2021-11-26 [1] CRAN (R 4.3.1)
 mgcv          1.9-0   2023-07-11 [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)
 nlme          3.1-162 2023-01-31 [2] 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)
 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

──────────────────────────────────────────────────────────────────────────────