R语言forestplot 根据分组设置不同颜色

本文介绍如何使用R语言的forestplot包进行目录分组设置颜色,并为每行增加辅助线,通过具体代码示例展示了不同组别颜色的设置方法及增加水平辅助线的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分组设置颜色

library(forestplot)

fn <- local({
  i = 0
  function(..., clr.line, clr.marker){
    i <<- i + 1
    if(i%%4==3){fpDrawNormalCI(..., clr.line = "#000000", clr.marker = "#00B9BF")} #4组中的第3组
    else if(i%%4==0){fpDrawNormalCI(..., clr.line = "#000000", clr.marker = "#C26EFF")} #4组中的第4组
    else if(i%%4==2 ){fpDrawNormalCI(..., clr.line = "#000000", clr.marker = "#6DA500")} #4组中的第2组
    else(fpDrawNormalCI(..., clr.line = "#000000", clr.marker = "#F9675C")) #4组中的第1组
    
  }
})

tabletext=cbind(c("Outcomes",figure_2_data$Treatmeant),c("CI (95%OR)",figure_2_data$`OR (95% CI)*`),c("P Value", figure_2_data$P))

forestplot(labeltext=tabletext,graph.pos = 2,mean = c(NA,figure_2_data$OR),lower = c(NA,figure_2_data$Low),upper = c(NA,figure_2_data$High),boxsize = 0.5,
            txt_gp=fpTxtGp(label=gpar(cex=1.25),
                         ticks=gpar(cex=1.1),
                         xlab=gpar(cex = 1.2),
                         title=gpar(cex = 1.2)),zero = 1,align = "l",
           is.summary = c(T,T,F,F,F,F,T,F,F,F,F,T,F,F,F,F,T,F,F,F,F),
           col = fpColors(box = c("darkblue","darkred")),
           fn.ci_norm = fn,
           colgap = unit(8,"mm"),
           graphwidth = unit(12,"cm")
           )

效果图在这里插入图片描述

给每行增加辅助线

line_list_Insuf1=list()
for (i in 1:84) {
  exprs=paste0("line_list_Insuf1$`",i,"`=gpar(lwd=1, columns=1:5, col = '#99999922')")
  eval(parse(text=exprs))
}
line_list_Insuf1$`1`=gpar(lwd=2, columns=1:7, col = '#202020')
line_list_Insuf1$`2`=gpar(lwd=2, columns=1:7, col = '#202020')

# parse 将character转换为expression
# eval 执行 expression

# forestplot 函数里面再加上这句参数
hrzl_lines = line_list_Insuf1

在这里插入图片描述

在R语言中,`forestplot`包是用来创建森林图(Forest Plot),通常用于展示回归分析、卡方检验等统计模型的结果。当你尝试将`forestplot`函数放入`for`循环中来绘制一系列的图像时,可能会遇到问题,因为`forestplot`期望的是单一的数据结构作为输入,并不是针对每个迭代单独绘制。 以下是可能出现的问题以及解决方法: 1. **数据格式**:`for`循环需要一个列表或者其他可以逐个提取数据的结构。你需要确保每次循环都返回一个符合`forestplot`要求的数据框或向量。 ```R # 假设data是一个包含多个模型结果的list for (i in seq_along(data)) { plot_data <- data[[i]] # 提取当前循环的数据 forestplot(plot_data) } ``` 2. **图形叠加**:默认情况下,`forestplot`会清除之前绘制的内容,如果你想保留所有的图,需要设置`add = TRUE`: ```R for (i in seq_along(data)) { plot_data <- data[[i]] forestplot(plot_data, add = T) # 添加到之前的图上 } ``` 3. **内存管理**:如果你处理的数据非常大,一次性加载所有数据可能会导致内存不足。考虑分批处理或者使用`purrr::map`等函数结合`invisible()`来避免阻塞。 ```R library(purrr) forestplots <- map(data, function(x) invisible(forestplot(x))) ``` 最后,检查你的数据是否满足`forestplot`的要求,比如是否有正确的列名和顺序。如果还有问题,确认你已经安装并正确加载了`forestplot`包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值