R可视化:分组频率分布直方图和密度图

介绍

  • ggplot2绘制分组频率分布直方图和密度图

加载R包

{r, 复制代码
knitr::opts_chunk$set(message = FALSE, warning = FALSE)
library(tidyverse)
library(patchwork)
library(ggpubr)
library(rstatix)

# rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 10000 * 1024^2)

Importing data

{r, 复制代码
inputdata <- data.frame(
  GroupA = c(rnorm(80, 4, 2), rnorm(120, 10, 3)),
  GroupB = c(rnorm(130, 4, 2), rnorm(70, 10, 3)))

plotdata <- inputdata %>%
  tidyr::pivot_longer(
    cols = GroupA:GroupB,
    names_to = "variable",
    values_to = "value")

head(plotdata)

组间检验

{r} 复制代码
stat.test <- plotdata %>%
  t_test(value ~ variable) %>%
  adjust_pvalue(method = "bonferroni") %>%
  add_significance("p.adj")

stat.test

基础图

绘制基础的直方图

{r, 复制代码
p1 <- plotdata %>% 
  dplyr::filter(variable == "GroupA") %>%
  ggplot(aes(x = value)) +
  geom_histogram(binwidth = 1, color = "black", fill = "#03B0AB", cex = 1) +
  geom_density(aes(value, y = after_stat(count)), color = "black",
               fill = "#03B0AB", alpha = 0.2, cex = 1) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0), limits = c(0, 33)) +
  labs(x = NULL, y = "Count") +
  theme_classic(base_size = 15) +
  theme(axis.text = element_text(color = "black"))

p2 <- plotdata %>% 
  dplyr::filter(variable == "GroupB") %>%
  ggplot(aes(x = value)) +
  geom_histogram(binwidth = 1, color = "black", fill = "#FB632E", cex = 1) +
  geom_density(aes(value, y = after_stat(count)), color = "black",
               fill = "#FB632E", alpha = 0.2, cex = 1) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0), limits = c(0, 33)) +
  labs(x = NULL, y = NULL) +
  theme_classic(base_size = 15) +
  theme(axis.line.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        axis.text = element_text(color = "black"))

修图

  • 添加显著性结果以及合并图形
{r, 复制代码
pl <- p1 + 
  geom_rect(aes(xmin = 12, 
                xmax = 16, 
                ymin = mean(inputdata$GroupA) + 3 * sd(inputdata$GroupA), 
                ymax = mean(inputdata$GroupA) + 3.5 * sd(inputdata$GroupA)),
            color = "#03B0AB", fill = "transparent", cex = 1) +
  annotate("text", x = 13.5 , y = mean(inputdata$GroupA) + 3.2 * sd(inputdata$GroupA), 
           label = "GroupA", size = 3.5) +
  annotate("segment", x = mean(inputdata$GroupA), xend = mean(inputdata$GroupA), 
           y = 0, yend = 31,
           linetype = 2, cex = 1) +
  coord_cartesian(clip = "off", xlim = c(ceiling(min(inputdata$GroupA)) - 1, 
                                         ceiling(max(inputdata$GroupA)) + 1)) +
  theme(axis.title = element_text(size = 11, face = "bold"),
        axis.text = element_text(color = "black", size = 9)) +
  
  p2 +
  geom_rect(aes(xmin = 12,
                xmax = 16,
                ymin = mean(inputdata$GroupB) + 3 * sd(inputdata$GroupB), 
                ymax = mean(inputdata$GroupB) + 3.5 * sd(inputdata$GroupB)),
            color = "#FB632E", fill = "transparent", cex = 1) +
  annotate("text",x = 13.5, y = mean(inputdata$GroupB) + 3.2 * sd(inputdata$GroupB), 
           label = "GroupB", size = 3.5) +
  annotate("segment", x = mean(inputdata$GroupB), xend = mean(inputdata$GroupB), 
           y = 0, yend = 31, linetype = 2, cex = 1) +
  xlab("Value") +
  theme(axis.title.x = element_text(hjust = -0.2)) +
  coord_cartesian(clip = "off", xlim = c(ceiling(min(inputdata$GroupB)) - 1, 
                                         ceiling(max(inputdata$GroupB)) + 1)) +
  annotate("segment", x = -2*mean(inputdata$GroupA), xend = mean(inputdata$GroupB), 
           y = 31, yend = 31, cex = 1) +
  annotate("text", x = -mean(inputdata$GroupA)+2, y = 32, size = 5, 
           label = paste0("p=", stat.test$p.adj)) +
  theme(axis.title = element_text(size = 11, face = "bold"),
        axis.text = element_text(color = "black", size = 9))

pl

systemic information

{r} 复制代码
devtools::session_info()
markdown 复制代码
─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.3 (2024-02-29)
 os       macOS Sonoma 14.2
 system   aarch64, darwin20
 ui       RStudio
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Asia/Shanghai
 date     2024-04-24
 rstudio  2023.12.1+402 Ocean Storm (desktop)
 pandoc   3.1.1 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (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.0)
 cachem        1.0.8   2023-05-01 [1] CRAN (R 4.3.0)
 car           3.1-2   2023-03-30 [1] CRAN (R 4.3.0)
 carData       3.0-5   2022-01-06 [1] CRAN (R 4.3.0)
 cli           3.6.2   2023-12-11 [1] CRAN (R 4.3.1)
 colorspace    2.1-0   2023-01-23 [1] CRAN (R 4.3.0)
 crayon        1.5.2   2022-09-29 [1] CRAN (R 4.3.0)
 devtools      2.4.5   2022-10-11 [1] CRAN (R 4.3.0)
 digest        0.6.35  2024-03-11 [1] CRAN (R 4.3.1)
 dplyr       * 1.1.4   2023-11-17 [1] CRAN (R 4.3.1)
 ellipsis      0.3.2   2021-04-29 [1] CRAN (R 4.3.0)
 evaluate      0.23    2023-11-01 [1] CRAN (R 4.3.1)
 fansi         1.0.6   2023-12-08 [1] CRAN (R 4.3.1)
 farver        2.1.1   2022-07-06 [1] CRAN (R 4.3.0)
 fastmap       1.1.1   2023-02-24 [1] CRAN (R 4.3.0)
 forcats     * 1.0.0   2023-01-29 [1] CRAN (R 4.3.0)
 fs            1.6.3   2023-07-20 [1] CRAN (R 4.3.0)
 generics      0.1.3   2022-07-05 [1] CRAN (R 4.3.0)
 ggplot2     * 3.5.0   2024-02-23 [1] CRAN (R 4.3.3)
 ggpubr      * 0.6.0   2023-02-10 [1] CRAN (R 4.3.0)
 ggsignif      0.6.4   2022-10-13 [1] CRAN (R 4.3.0)
 glue          1.7.0   2024-01-09 [1] CRAN (R 4.3.1)
 gtable        0.3.4   2023-08-21 [1] CRAN (R 4.3.0)
 hms           1.1.3   2023-03-21 [1] CRAN (R 4.3.0)
 htmltools     0.5.8   2024-03-25 [1] CRAN (R 4.3.1)
 htmlwidgets   1.6.4   2023-12-06 [1] CRAN (R 4.3.1)
 httpuv        1.6.15  2024-03-26 [1] CRAN (R 4.3.1)
 knitr         1.45    2023-10-30 [1] CRAN (R 4.3.1)
 labeling      0.4.3   2023-08-29 [1] CRAN (R 4.3.0)
 later         1.3.2   2023-12-06 [1] CRAN (R 4.3.1)
 lifecycle     1.0.4   2023-11-07 [1] CRAN (R 4.3.1)
 lubridate   * 1.9.3   2023-09-27 [1] CRAN (R 4.3.1)
 magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.3.0)
 memoise       2.0.1   2021-11-26 [1] CRAN (R 4.3.0)
 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.0)
 munsell       0.5.0   2018-06-12 [1] CRAN (R 4.3.0)
 patchwork   * 1.2.0   2024-01-08 [1] CRAN (R 4.3.1)
 pillar        1.9.0   2023-03-22 [1] CRAN (R 4.3.0)
 pkgbuild      1.4.4   2024-03-17 [1] CRAN (R 4.3.1)
 pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.3.0)
 pkgload       1.3.4   2024-01-16 [1] CRAN (R 4.3.1)
 plyr          1.8.9   2023-10-02 [1] CRAN (R 4.3.1)
 profvis       0.3.8   2023-05-02 [1] CRAN (R 4.3.0)
 promises      1.2.1   2023-08-10 [1] CRAN (R 4.3.0)
 purrr       * 1.0.2   2023-08-10 [1] CRAN (R 4.3.0)
 R6            2.5.1   2021-08-19 [1] CRAN (R 4.3.0)
 Rcpp          1.0.12  2024-01-09 [1] CRAN (R 4.3.1)
 readr       * 2.1.5   2024-01-10 [1] CRAN (R 4.3.1)
 remotes       2.5.0   2024-03-17 [1] CRAN (R 4.3.1)
 reshape       0.8.9   2022-04-12 [1] CRAN (R 4.3.0)
 rlang         1.1.3   2024-01-10 [1] CRAN (R 4.3.1)
 rmarkdown     2.26    2024-03-05 [1] CRAN (R 4.3.1)
 rstatix     * 0.7.2   2023-02-01 [1] CRAN (R 4.3.0)
 rstudioapi    0.16.0  2024-03-24 [1] CRAN (R 4.3.1)
 scales        1.3.0   2023-11-28 [1] CRAN (R 4.3.1)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.3.0)
 shiny         1.8.1   2024-03-26 [1] CRAN (R 4.3.1)
 stringi       1.8.3   2023-12-11 [1] CRAN (R 4.3.1)
 stringr     * 1.5.1   2023-11-14 [1] CRAN (R 4.3.1)
 tibble      * 3.2.1   2023-03-20 [1] CRAN (R 4.3.0)
 tidyr       * 1.3.1   2024-01-24 [1] CRAN (R 4.3.1)
 tidyselect    1.2.1   2024-03-11 [1] CRAN (R 4.3.1)
 tidyverse   * 2.0.0   2023-02-22 [1] CRAN (R 4.3.0)
 timechange    0.3.0   2024-01-18 [1] CRAN (R 4.3.1)
 tzdb          0.4.0   2023-05-12 [1] CRAN (R 4.3.0)
 urlchecker    1.0.1   2021-11-30 [1] CRAN (R 4.3.0)
 usethis       2.2.3   2024-02-19 [1] CRAN (R 4.3.1)
 utf8          1.2.4   2023-10-22 [1] CRAN (R 4.3.1)
 vctrs         0.6.5   2023-12-01 [1] CRAN (R 4.3.1)
 withr         3.0.0   2024-01-16 [1] CRAN (R 4.3.1)
 xfun          0.43    2024-03-25 [1] CRAN (R 4.3.1)
 xtable        1.8-4   2019-04-21 [1] CRAN (R 4.3.0)
 yaml          2.3.8   2023-12-11 [1] CRAN (R 4.3.1)

 [1] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library

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

Reference

相关推荐
生信摆渡10 小时前
R语言-快速对多个变量取交集
开发语言·数据库·r语言
biomooc11 小时前
R语言/Rstudio 报错
开发语言·r语言
Hello World and You18 小时前
R ggplot2 绘图细节 geom_text展示不全 y轴坐标细节 x轴标题
开发语言·r语言
NiNg_1_2342 天前
R语言基础入门详解
开发语言·r语言
rock——you2 天前
R环境依赖的备份与恢复全攻略
开发语言·r语言
biomooc3 天前
R语言 | 宽数据变成一列,保留对应的行名和列名
开发语言·r语言
生信学习小达人3 天前
R package安装的几种方式
开发语言·r语言
卡卡_R-Python3 天前
训练误差or测试误差与特征个数之间的关系--基于R语言实现
开发语言·回归·r语言
亚图跨际4 天前
MATLAB和Python及R瑞利散射
python·matlab·r语言·光学·瑞利散射
不是伍壹4 天前
【R语言】字符类型转换
开发语言·r语言