查看原文
其他

ggstats包,基于ggplot2语法绘制森林图

段湘杰 R语言统计与绘图 2023-05-17

今天来学习一个新的R包——ggstats包。

这个R包是ggplot2的扩展包,使用这个R包可以快速回归模型的系数结果,也就是可以使用这个R包来绘制森林图。

绘制森林图图形如下:

下面来学习下这个R包。

1. 安装和加载R包

安装R 包可以直接从CRAN 上安装。

install.packages("ggstats")
library(ggstats)
library(survival) # 加载数据
library(dplyr) # 处理数据需要

2. 加载数据

使用colon 数据集进行演示。

data(colon) # 加载数据集
str(colon) # 查看数据集结构

查看数据集介绍,可以知道有些变量是分类变量,但是加载进来的数据集变量还是数字型,我们处理一下。

data(colon) # 加载数据集
mycolon <- colon %>%
  transmute(time,
            status,
            Age = age,
            Sex = factor(sex, levels = c(0, 1),
                         labels = c("Female""Male")),
            Obstruct = factor(obstruct, levels = c(0, 1),
                              labels = c("No""Yes")),
            Differ = factor(differ, levels = c(1, 2, 3),
                            labels = c("well""moderate""poor")),
            Extent = factor(extent, levels = c(1, 2, 3, 4),
                            labels = c("submucosa""muscle""erosa""contiguous structures"))
            )

如上代码所示,我将colon 数据集中的部分变量转换了因子,并新建了一个数据集mycolon,下面使用mycolon 数据集进行演示。

3. 拟合模型

我们拟合逻辑回归模型。

fit.cox <- glm(status ~ Age + Sex + Obstruct + Differ + Extent,
                binomial(link="logit"), data = mycolon)

然后查看回归模型的结果。

summary(fit.cox)

4. 回归模型可视化

可以使用ggstats包的ggcoef_model()函数来可视化回归模型的系数。

ggcoef_model(fit.cox)

如上所示,横坐标为系数值,纵坐标为各变量及分类水平。

可以使用exponentiate参数来将系数转化为OR值。

ggcoef_model(fit.cox, exponentiate = TRUE)

5. 调整参数自定义美化图形

也可以调整其他参数来自定义图形。

比如调整show_p_values 参数来去掉纵坐标的P值。

ggcoef_model(fit.cox, exponentiate = TRUE,
             show_p_values = FALSE)

可以调整signif_stars 参数来去掉纵坐标的星号值。

ggcoef_model(fit.cox, exponentiate = TRUE,
             show_p_values = FALSE,
             signif_stars = FALSE)

可以使用errorbar_height来调整误差棒的高度;使用point_size参数来调整OR点的大小。

ggcoef_model(fit.cox, exponentiate = TRUE,
             show_p_values = FALSE,
             signif_stars = FALSE,
             errorbar_height = 0.4,
             point_size = 3)

同样既然是ggplot2扩展包,那么ggplot2的一些语法也是可以直接使用的。

比如使用黑白主题。

ggcoef_model(fit.cox, exponentiate = TRUE,
             show_p_values = FALSE,
             signif_stars = FALSE) + 
  ggplot2::theme_bw()

其他主题也可以看看,比如theme_linedraw()。

另外可以去掉图例。

ggcoef_model(fit.cox, exponentiate = TRUE,
             show_p_values = FALSE,
             signif_stars = FALSE) + 
  ggplot2::theme_light() + 
  ggplot2::theme(legend.position="none")

如果要调整更多的参数,可以查看函数的帮助文档。

参考文档

  1. ggstats包帮助文档

关注下方公众号,分享更多更好玩的R语言知识。

点个在看,SCI马上发表。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存