Closed ixxmu closed 2 years ago
导语
GUIDE ╲
森林图是以统计指标和统计分析方法为基础,用数值运算结果绘制出的图型。用以综合展示每个被纳入研究的效应量以及汇总的合并效应量。
library(grid)
library(forestploter)
# 读取实例数据
dt <- read.csv(system.file("extdata", "example_data.csv", package = "forestploter"))
# 筛选需要的列
dt <- dt[,1:6]
# 缩进
dt$Subgroup <- ifelse(is.na(dt$Placebo),
dt$Subgroup,
paste0(" ", dt$Subgroup))
# NA 为空白或 NA 将转换为字符
dt$Treatment <- ifelse(is.na(dt$Treatment), "", dt$Treatment)
dt$Placebo <- ifelse(is.na(dt$Placebo), "", dt$Placebo)
dt$se <- (log(dt$hi) - log(dt$est))/1.96
# 为森林图添加空白列以显示 CI
dt$` ` <- paste(rep(" ", 20), collapse = " ")
# 创建置信区间列
dt$`HR (95% CI)` <- ifelse(is.na(dt$se), "",
sprintf("%.2f (%.2f to %.2f)",
dt$est, dt$low, dt$hi))
head(dt)
# 设置主题
tm <- forest_theme(base_size = 10,
refline_col = "red",
footnote_col = "#636363",
footnote_fontface = "italic")
##参数设置
p <- forest(dt[,c(1:3, 8:9)],
est = dt$est,
lower = dt$low,
upper = dt$hi,
sizes = dt$se,
ci_column = 4,
ref_line = 1,
arrow_lab = c("Placebo Better", "Treatment Better"),
xlim = c(0, 4),
ticks_at = c(0.5, 1, 2, 3),
footnote = "This is the demo data. Please feel free to change\nanything you want.",
theme = tm)
plot(p)
library(forestplot)
library(dplyr)
# 来自“rmeta”包的 Cochrane 数据
cochrane_from_rmeta <- structure(list(mean = c(NA, NA, 0.578, 0.165, 0.246, 0.700, 0.348, 0.139, 1.017, NA, 0.531),
lower = c(NA, NA, 0.372, 0.018, 0.072, 0.333, 0.083, 0.016, 0.365, NA, 0.386),
upper = c(NA, NA, 0.898, 1.517, 0.833, 1.474, 1.455, 1.209, 2.831, NA, 0.731)),
.Names = c("mean", "lower", "upper"),
row.names = c(NA, -11L),
class = "data.frame")
#数据处理
tabletext <- cbind(c("", "Study", "Auckland", "Block", "Doran", "Gamsu", "Morrison", "Papageorgiou", "Tauesch", NA, "Summary"),
c("Deaths", "(steroid)", "36", "1", "4", "14", "3", "1", "8", NA, NA),
c("Deaths", "(placebo)", "60", "5", "11", "20", "7", "7", "10", NA, NA),
c("", "OR", "0.58", "0.16", "0.25", "0.70", "0.35", "0.14", "1.02", NA, "0.53"))
cochrane_from_rmeta %>%
forestplot(labeltext = tabletext,
is.summary = c(rep(TRUE, 2), rep(FALSE, 8), TRUE),
clip = c(0.1, 2.5),
xlog = TRUE,
col = fpColors(box = "royalblue",
line = "darkblue",
summary = "royalblue"))
exdf <- cbind(OR=c(1.21,0.90,1.02,
1.54,1.32,0.79,1.38,0.85,1.11,
1.58,1.80,2.27),
LCI=c(0.82,0.61,0.66,
1.08,0.91,0.48,1.15,0.39,0.91,
0.99,1.48,0.92),
UCI=c(1.79,1.34,1.57,
2.19,1.92,1.32,1.64,1.87,1.34,
2.54,2.19,5.59),
groups=c(1,1,1,
2,2,2,2,2,2,
3,3,3))
exdf <- data.frame(exdf)
rownames(exdf) <- c('Barry, 2005', 'Frances, 2000', 'Rowley, 1995',
'Biro, 2000', 'Crowe, 2010', 'Harvey, 1996',
'Johns, 2004', 'Parr, 2002', 'Zhang, 2011',
'Flint, 1989', 'Mac Vicar, 1993', 'Turnbull, 1996')
knitr::kable(exdf)
forplo(exdf[,1:3],
groups=exdf$groups,
grouplabs=c('Low risk of bias',
'Some concerns',
'High risk of bias'))
library(metaviz)
viz_forest(x = mozart[1:10, c("d", "se")], study_labels = mozart[1:10, c("study_name")],
summary_label = "Summary effect", xlab = "Cohen d")
viz_forest(x = mozart[1:10, c("d", "se")], study_labels = mozart[1:10, c("study_name")],
summary_label = "Summary effect", xlab = "Cohen d", variant = "rain")
library(ggforestplot)
library(tidyverse)
# 数据集
df <-
ggforestplot::df_linear_associations %>%
filter(
trait == "BMI",
dplyr::row_number() <= 30
)
# 绘制横截面线性关联的森林图
ggforestplot::forestplot(
df = df,
name = name,
estimate = beta,
se = se
)
library(survminer)
library(survival)
res.cox <- coxph(Surv(time, status) ~ ph.karno * age, data=lung)
summary(res.cox, conf.int = FALSE)
##画图ggforest()
ggforest(res.cox, data = lung)
分析专辑
单细胞scRNA | R包绘图 | 免疫浸润分析 | 肿瘤纯度评估工具 | 数据库
文章解读专辑
多区域进化文章精读 | 高分文章精读 | 免疫微环境文献解读
招聘信息
点击蓝字即可进入专栏!
长期诚邀师资合作
作图丫长期进行生信技能培训,诚邀有能力的团队、老师或者科研大咖合作
无论是科研写作技巧、技术分析经验还是生信流程分析,我们保证只要您有专长,作图丫就是您展示自己的舞台
如有意,请与赵老师联系,谢谢
微信:guofengzhao527
合作方式:线上课程
劳动报酬:酬劳丰厚,微信私聊
文字均为原创,欢迎读者分享或转发到朋友圈,任何公众号或其他媒体未经许可不得私自转载或抄袭。
由于微信平台算法改版,公众号内容将不再以时间排序展示,建议设置“作图丫”公众号为星标,防止丢失。星标具体步骤为:
(1)点击页面最上方“作图丫”,进入公众号主页;
(2)点击右上角的小点点,在弹出界面选择“设为星标”即可。
作图丫分析作图群进群要求:转发任一篇“zuotuya”公众号文章至微信朋友圈,并附“作图丫关注绘图和精品分析,期待你的关注”,并获得10个赞后加小编微信“guofengzhao527”邀请你加入。
https://mp.weixin.qq.com/s/U8LeRTJ0C8CwpOmwW5P01w