R语言forestploter包优雅的绘制孟德尔随机化研究森林图

这篇具有很好参考价值的文章主要介绍了R语言forestploter包优雅的绘制孟德尔随机化研究森林图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在既往文章中,我们对孟德尔随机化研究做了一个简单的介绍。我们可以发现,使用TwoSampleMR包做出来的森林图并不是很美观。今天我们使用R语言forestploter包优雅的绘制孟德尔随机化研究森林图。
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
使用TwoSampleMR包做出来的森林图是这样的
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
而很多SCI文章中的森林图是这样的
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
我们今天来做个上图这样的森林图,使用的是《R语言复现一篇6分的孟德尔随机化文章》的数据,这篇文章作者直接提供了数据,所以我就直接拿来用了。作者分析了很多精神病和骨密度的结果,这里我就取精神分裂症和骨密度结果来分析
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
我们构造森林图的大概格式如下,所以我们要按下图构造数据表格
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
这一步只能手工做,没什么好办法,不过也没花几分钟,样本量可以在网站上找,做好大概就是下图这样。公众号回复:孟德尔森林图,可以获得这个数据。
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
咱们先来导入数据看一下
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
这样的格式和我们绘图格式还有点差别。我们还需调整一下,还有个问题就是95%CI这里的上线区间和下限区间是连在一起的,我们要把它分开提取出来,需要用到一点点非常简单的正则式小知识。使用正则式需要使用stringr包,我们先把95%ci单独提出来

library(stringr)
cl<-bc$`95%Cl`

文章作者制作的这个表格非常整齐,我们提取需要使用str_sub函数,这个函数使用非常简单,你想提取什么内容,输入它的位置就可以了,下限low是1-5位置,这里要注意一下,小数点也占一个位置

bc$low<-str_sub(cl,1,5)

接下来我们提取上限区间,位置是7-11

bc$hi<-str_sub(cl,7,11)

这样数据就单独提取出来了

R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
接下来就是导入forestploter包来绘制森林图

library(grid)
library(forestploter)

给它把第一个变量空一格,等下绘图的时候好看点

bc$Outcome<- ifelse(!is.na(bc$`sample size`), bc$Outcome, paste0("   ", bc$Outcome))

R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
sample size、P-Value变量等下要来绘图,我们把缺失的地方变成空格

bc$`sample size` <- ifelse(is.na(bc$`sample size`), "", bc$`sample size`)
bc$`P-Value` <- ifelse(is.na(bc$`P-Value`), "", bc$`P-Value`)

R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
生成一个变量se,它在绘图的时候表示正方形的大小

bc$se <- (log(as.numeric(bc$hi)) - log(as.numeric(bc$OR)))/1.96

把hi和low转成数字,等下要使用它来转换一下

bc$hi<-as.numeric(bc$hi)
bc$low <-as.numeric(bc$low)

生成OR (95% CI)

bc$`OR (95% CI)` <- ifelse(is.na(bc$se), "",
                           sprintf("%.2f (%.2f to %.2f)",
                                   bc$OR, bc$low, bc$hi))#sprintF返回字符和可变量组合

生成一个空的绘图区间

bc$` ` <- paste(rep(" ", 20), collapse = " ")

最后数据格式如下
R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
绘图,这里注意下移ci_column = 4是以后面生成的数据来定的

forest(bc[,c(1:2,9,10,5)],
       est = bc$OR,       #效应值
       lower = bc$low,     #可信区间下限
       upper = bc$hi,      #可信区间上限
       sizes = bc$se,
       ci_column = 4,   #在那一列画森林图,要选空的那一列
       ref_line = 1,
       arrow_lab = c("No Schizophrenia", "Schizophrenia"),
       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.")

R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
我们也可以先给森林图设定一个格式,后面再采用这个格式

tm <- forest_theme(base_size = 10,  #文本的大小
                   # Confidence interval point shape, line type/color/width
                   ci_pch = 15,   #可信区间点的形状
                   ci_col = "#762a83",    #CI的颜色
                   ci_fill = "blue",     #ci颜色填充
                   ci_alpha = 0.8,        #ci透明度
                   ci_lty = 1,            #CI的线型
                   ci_lwd = 1.5,          #CI的线宽
                   ci_Theight = 0.2, # Set an T end at the end of CI  ci的高度,默认是NULL
                   # Reference line width/type/color   参考线默认的参数,中间的竖的虚线
                   refline_lwd = 1,       #中间的竖的虚线
                   refline_lty = "dashed",
                   refline_col = "grey20",
                   # Vertical line width/type/color  垂直线宽/类型/颜色   可以添加一条额外的垂直线,如果没有就不显示
                   vertline_lwd = 1,              #可以添加一条额外的垂直线,如果没有就不显示
                   vertline_lty = "dashed",
                   vertline_col = "grey20",
                   # Change summary color for filling and borders   更改填充和边框的摘要颜色
                   summary_fill = "yellow",       #汇总部分大菱形的颜色
                   summary_col = "#4575b4",
                   # Footnote font size/face/color  脚注字体大小/字体/颜色
                   footnote_cex = 0.6,
                   footnote_fontface = "italic",
                   footnote_col = "red")

使用这个模板绘图

forest(bc[,c(1:2,9,10,5)],
       est = bc$OR,       #效应值
       lower = bc$low,     #可信区间下限
       upper = bc$hi,      #可信区间上限
       sizes = bc$se,
       ci_column = 4,   #在那一列画森林图,要选空的那一列
       ref_line = 1,
       arrow_lab = c("No Schizophrenia", "Schizophrenia"),
       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)

R语言forestploter包优雅的绘制孟德尔随机化研究森林图,孟德尔随机化,R语言,r语言
这样一个符合论文发表的森林图就做好啦。文章来源地址https://www.toymoban.com/news/detail-566715.html

到了这里,关于R语言forestploter包优雅的绘制孟德尔随机化研究森林图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R数据分析:孟德尔随机化实操

    好多同学询问孟德尔随机化的问题,我再来尝试着梳理一遍,希望对大家有所帮助,首先看下图1分钟,盯着看将下图印在脑海中: 上图是工具变量(不知道工具变量请翻之前的文章)的模式图,明确一个点: 我们做孟德尔的时候感兴趣的是x和y的关系,也就是小b ,但是我们

    2024年01月23日
    浏览(29)
  • 【R包安装】TwoSampleMR 两样本孟德尔随机化

    根据报错,依次安装依赖包,不能直接在R中安装的包(可能是因为版本不对)可以用conda安装。 安装好依赖包以后就能成功安装TwoSampleMR包了 library以后显示上面的信息就说明安装成功了

    2024年02月11日
    浏览(34)
  • R语言forestplot包绘制森林图

    森林图在论文中很常见,多用于表示多因素分析中的变量与结果变量的比值效应,可以用图示的方法比较直观的绘制出来。既往我们在文章《R语言快速绘制多因素回归分析森林图(1)》《R语言使用forestploter包绘制单组及双组森林图(2)(附有超详细备注)》已经介绍了怎么

    2023年04月19日
    浏览(23)
  • R语言:多因素Cox回归森林图 (基于forestplot包) 森林图 cox可视化

    微信公众号:生信小博士 单细胞——从降维聚类分群、细胞命名、到批量富集分析,一文打通GSE104154博来霉素小鼠模型单细胞数据   本期开始介绍Cox回归模型可视化。 之前学习过的的临床回归模型可视化方法主要是森林图和列线图 (Nomogram)。 计划是介绍一下单因素、多因素

    2023年04月08日
    浏览(28)
  • 【Python】在同一图形中更加优雅地绘制多个子图

    数据可视化非常重要,有一句俗语叫做 一图顶千言 ,我相信好多小伙伴应该都听说过这句话;即使是有人第一次听到,我想应该也会觉得赞成,这足以说明数据可视化的重要性。我们在前一篇博客中,介绍了如何利用 subplot 来在一张子图里绘制多个子图,最近我又发现了一

    2024年02月11日
    浏览(25)
  • 使用MNE优雅的绘制一幅脑电原始信号图

    最近想要绘制一个原始的脑电信号图,插到论文里面,但是尝试了好多数据显示方法,都不是很满意,就想着再MNE的基础上改一下,就有了这篇博客。 使用mne绘制一幅原始的脑电信号图可以使用如下的代码实现: 但是上述代码画出来的图有点单调,不是很美观,就如下图,

    2024年02月06日
    浏览(29)
  • Opencv(C++)笔记--绘制直线、矩形、椭圆、圆、填充多边形、绘制字体和随机产生坐标点

    目录 1--cv::line()绘制直线 2--cv::Rect()绘制矩形 3--cv::ellipse()绘制椭圆 4--cv::circle()绘制圆 5--cv::fillPoly()填充多边形 6--cv::putText()绘制字体 6--cv::RNG随机产生坐标点 使用 cv::Point p1 定义坐标点; 使用 cv::line() 绘制直线,传入的参数依次为:背景图、两个点的坐标、直线的颜色、直线

    2024年02月14日
    浏览(38)
  • 【unity实战】随机地下城生成2——绘制地图Tilemap的使用及一些技巧的使用(含源码)

    参考原视频链接: 【视频】:https://space.bilibili.com/370283072 注意 :本文为学习笔记记录,推荐支持原作者,去看原视频自己手敲代码理解更加深入 修改素材配置 切割图片 绘制瓦片地图 先新建我们的调色盘,保存好位置 拖入我们刚才切片好的素材 在房间预设体创建我们的瓦

    2024年02月13日
    浏览(31)
  • 通过向量回归、随机森林回归、线性回归和K-最近邻回归将预测结果绘制成图表进行展示

    附件里会给出全部数据链接 导入需要用到的Python库。pandas用于处理数据,numpy用于科学计算,matplotlib.pyplot用于绘图,FontProperties用于设置字体属性。在这里我们导入了中文字体PingFang Bold.ttf,以后进行绘图时就可以使用这个字体了。 打开了名为“中国各地现货棉花价格.xlsx”

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包