你的位置:汽车物联网软件开发多少钱 > 物联网软件开发资讯 > 物联网软件开发公司 多列实在区间、多组别的丛林图绘制

物联网软件开发公司 多列实在区间、多组别的丛林图绘制

时间:2024-11-06 06:46:02 点击:184 次

💡专注R言语在🩺生物医学中的使用

设为“星标”,精彩可以过

现时R内部绘制丛林图最佳用的R包我以为等于forestploter了,我写过多篇推文先容过丛林图,其中都用到了这个R包,比如:

app用更疏漏的神气画丛林图R言语亚组分析及丛林图绘制R言语亚组分析1行代码收尾!亚组分析和多成分追忆的丛林图相比

况兼这个包的作家还在积极叹惜中,莫得跑路的趋势~在R中绘制丛林图,诚然我先容过好多R包,然而用到当今我最保举的整个是forestploter,莫得之一!

今天再给环球先容下如何使用这个包绘制有多列丛林的丛林图。

率先环球要光显这个包的使用逻辑,我在画一个排场的丛林图一文中就先容过:

此包在画丛林图时,最主要的是2个部分,一个是翰墨态状部分,即图中红框框住的部分,另一部分等于中间的丛林图部分,其余的都是细节修改问题,只须富余耐烦,就一定能改革到我方烦嚣。

图片

四区分析:上期奖号四区比为2:7:4:7,其中一区较冷,二、四区较热,最近10期开奖中第三区号码表现活跃,第二区号码走势较冷,本期看好第四区号码热出,预计第一区号码走冷,关注四区比3:6:4:7。

龙头分析:历史同期第182期龙头分别开出号码:01→02→01,龙头开出比较密集,去年同期龙头号码下降了1个点位,对比去年龙头,今年第182期看好龙头转向上升,关注号码03。

forest plot

其中丛林图,中间的绿色方块是均值(随机其他值),横线的两端是最大值和最小值(比如实在区间的陡立限之类的),是以你若是思要画出这个丛林的部分,就需要提供3个值:中间的方块和两端的值。

和洽了这个理念之后,使用这个包就容易多了。本色使用时珍贵它的条款即可,要了解其中的细节,乱写细则是不可的。最弥留的3个点是(相配弥留):

使用空格收尾缩进成果添加空列以遗弃丛林翰墨态状部分的有些NA需要改成空缺

常见的亚组分析的丛林图我就不展示若何画了,环球参考前边的几篇推文吧,径直演示如何绘制多列实在区间的丛林图。

率先是准备数据:

library(forestploter)library(grid)dt <- read.csv(system.file("extdata", "example_data.csv", package = "forestploter"))dt <- dt[1:7, ]# indent the subgroup if there is a number in the placebo columndt$Subgroup <- ifelse(is.na(dt$Placebo),                       dt$Subgroup,                      paste0("   ", dt$Subgroup))# 这里的NA要改成空缺,不然会在图中清晰为NAdt$n1 <- ifelse(is.na(dt$Treatment), "", dt$Treatment)dt$n2 <- ifelse(is.na(dt$Placebo), "", dt$Placebo)# 添加两列空缺用来遗弃“丛林”dt$`CVD outcome` <- paste(rep(" ", 20), collapse = " ")dt$`COPD outcome` <- paste(rep(" ", 20), collapse = " ")# 构造实在区间,sprintf是一个相配好用的身手化函数,我方学习下dt$ci1 <- paste(sprintf("%.1f (%.1f, %.1f)", dt$est_gp1, dt$low_gp1, dt$hi_gp1),                sprintf("%.1f (%.1f, %.1f)", dt$est_gp3, dt$low_gp3, dt$hi_gp3),                sep = "\n")dt$ci1[grepl("NA", dt$ci1)] <- "" # 把NA酿成空缺,你可以不改变绘画望望成果dt$ci2 <- paste(sprintf("%.1f (%.1f, %.1f)", dt$est_gp2, dt$low_gp2, dt$hi_gp2),                sprintf("%.1f (%.1f, %.1f)", dt$est_gp4, dt$low_gp4, dt$hi_gp4),                sep = "\n")dt$ci2[grepl("NA", dt$ci2)] <- "" # 把NA酿成空缺

底下是绘画:

# 主题成就tm <- forest_theme(base_size = 10,                   refline_lty = "solid",                   ci_pch = c(15, 18),                   ci_col = c("#377eb8", "#4daf4a"),                   footnote_col = "blue",                   legend_name = "Group",                   legend_value = c("Trt 1", "Trt 2"),                   vertline_lty = c("dashed", "dotted"),                   vertline_col = c("#d6604d", "#bababa"),                   # Table cell padding, width 4 and heights 3                   core = list(padding = unit(c(4, 3), "mm")))p <- forest(dt[,c(1, 19, 23, 21, 20, 24, 22)],            est = list(dt$est_gp1,                       dt$est_gp2                       # ,dt$est_gp3,                       # dt$est_gp4                       ),            lower = list(dt$low_gp1,                         dt$low_gp2                         # ,dt$low_gp3,                         # dt$low_gp4                         ),             upper = list(dt$hi_gp1,                         dt$hi_gp2                         # ,dt$hi_gp3,                         # dt$hi_gp4                         ),            ci_column = c(4, 7),            ref_line = 1,            vert_line = c(0.5, 2),            #nudge_y = 0.4,            theme = tm)plot(p)

图片

如何绘制有不同分组的丛林图呢?如下图所示,分红了Trt1和Trt2组:

图片

很疏漏,把上头扫视掉的代码加上即可,如下所示。

# 主题成就tm <- forest_theme(base_size = 10,                   refline_lty = "solid",                   ci_pch = c(15, 18),                   ci_col = c("#377eb8", "#4daf4a"),                   footnote_col = "blue",                   legend_name = "Group",                   legend_value = c("Trt 1", "Trt 2"),                   vertline_lty = c("dashed", "dotted"),                   vertline_col = c("#d6604d", "#bababa"),                   # Table cell padding, width 4 and heights 3                   core = list(padding = unit(c(4, 3), "mm")))# 第21列和第22列是咱们添加的空缺列,用来放“丛林”的# 在图中,咱们思把这两列“丛林”放在图的第4列和第7列(看着图数一数),汽车物联网软件开发多少钱# 是以21放在第4个,22放在第7个p <- forest(dt[,c(1, 19, 23, 21, 20, 24, 22)],            est = list(dt$est_gp1,                       dt$est_gp2                       ,dt$est_gp3,                       dt$est_gp4                       ),            lower = list(dt$low_gp1,                         dt$low_gp2                         ,dt$low_gp3,                         dt$low_gp4                         ),             upper = list(dt$hi_gp1,                         dt$hi_gp2                         ,dt$hi_gp3,                         dt$hi_gp4                         ),            ci_column = c(4, 7), # “丛林”在图中的位置            ref_line = 1,            vert_line = c(0.5, 2),            nudge_y = 0.4,            theme = tm)plot(p)

图片

这个包对这种情况的惩办相配精巧。

若是你要画2个丛林,若是你唯有1个组,那么你需要准备2套画丛林的数据,比如est=list(dt$est_gp1,dt$est_gp2),就分散对应着2个丛林中间点的值;若是你有2个组,也等于上头这个例子,那你要准备4套画丛林的数据,比如est=list(dt$est_gp1,dt$est_gp2,dt$est_gp3,dt$est_gp4),对应探讨如下图所示:

图片

两侧端点的值,对应探讨亦然和上图相似的,是以lower和upper亦然各需要4列。这是一个倍数探讨,不知谈你看懂了没~

为了绵薄你和洽,我把唯有1组的对应探讨也标出来:

图片

是以若是你唯有1列丛林,然而有3个分组,那你就需要准备3套数据(3列est,3列lower,3列upper),若是你要3列丛林,唯有1个分组,那你亦然需要准备3套数据(3列est,3列lower,3列upper),若是你要3列丛林,况兼有2个分组,那你需要准备6套数据(6列est,6列lower,6列upper)。

给环球展示一个3列丛林,有2个分组的,先准备下数据:

# 再添加1列空缺用来遗弃“丛林”dt$`测试outcome` <- paste(rep(" ", 20), collapse = " ")# 添加几列画“丛林”的数据Z,偷个懒,径直复制了dt$low_gp5 <- dt$low_gp1dt$low_gp6 <- dt$low_gp3dt$est_gp5 <- dt$est_gp2dt$est_gp6 <- dt$est_gp3dt$hi_gp5 <- dt$hi_gp1dt$hi_gp6 <- dt$hi_gp4

然后经受绘画需要的数据,绘画即可,珍贵把丛林放在正确的位置上:

# 主题成就tm <- forest_theme(base_size = 10,                   refline_lty = "solid",                   ci_pch = c(15, 18),                   ci_col = c("#377eb8", "#4daf4a"),                   footnote_col = "blue",                   legend_name = "Group",                   legend_value = c("Trt 1", "Trt 2"),                   vertline_lty = c("dashed", "dotted"),                   vertline_col = c("#d6604d", "#bababa"),                   # Table cell padding, width 4 and heights 3                   core = list(padding = unit(c(4, 3), "mm")))# 珍贵正确经受你的“态状”部分和“丛林”部分p <- forest(dt[,c(1, 19, 21, 22, 25)], # 这里是经受“态状”部分和遗弃“丛林”的列            est = list(dt$est_gp1,                       dt$est_gp2                       ,dt$est_gp3,                       dt$est_gp4,                       dt$est_gp5,                       dt$est_gp6                       ),            lower = list(dt$low_gp1,                         dt$low_gp2                         ,dt$low_gp3,                         dt$low_gp4,                         dt$low_gp5,                         dt$low_gp6                         ),             upper = list(dt$hi_gp1,                         dt$hi_gp2                         ,dt$hi_gp3,                         dt$hi_gp4,                         dt$hi_gp5,                         dt$hi_gp6                         ),            ci_column = c(3, 4, 5),            ref_line = 1,            vert_line = c(0.5, 2),            nudge_y = 0.4,            theme = tm)plot(p)

图片

是不是很easy呢?

这里我值经受了2列态状部分,你可以凭据我方的需求玩忽添加。我通篇莫得给环球展示数据长什么样,然而环球我方在学习这个包的本事,一定要对照着数据和图一谈看,这么才能更好的和洽这个包的理念。

除此除外物联网软件开发公司,这个包的自界说空间相配大,因为是基于grid的,太开脱了,行高、列宽、前餍足、背餍足、字体、对皆神气等等都是可以改革的,多望望匡助文档即可。

本站仅提供存储劳动,整个内容均由用户发布,如发现存害或侵权内容,请点击举报。
服务热线
官方网站:yrbejop.cn
工作时间:周一至周六(09:00-18:00)
联系我们
QQ:2852320325
邮箱:w365jzcom@qq.com
地址:武汉东湖新技术开发区光谷大道国际企业中心
关注公众号

Powered by 汽车物联网软件开发多少钱 RSS地图 HTML地图

Copyright Powered by站群系统 © 2013-2024 云迈科技 版权所有