标签: r-forestplot

散点图中的颜色编码误差线

我正在尝试创建一个森林图R plotly在其中我要通过相应的p值对效果大小(点)及其误差线进行颜色编码。

以下是玩具数据:

set.seed(1)

factors <- paste0(1:25,":age")
effect.sizes <- rnorm(25,0,1)
effect.errors <- abs(rnorm(25,0,1))
p.values <- runif(25,0,1)
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的:

library(dplyr)
plotly::plot_ly(type='scatter',mode="markers",y=~factors,x=~effect.sizes,color=~p.values,colors=grDevices::colorRamp(c("darkred","gray"))) %>%
      plotly::add_trace(error_x=list(array=effect.errors),marker=list(color=~p.values,colors=grDevices::colorRamp(c("darkred","gray")))) %>%
      plotly::colorbar(limits=c(0,1),len=0.4,title="P-Value") %>%
      plotly::layout(xaxis=list(title="Effect Size",zeroline=T,showticklabels=T),yaxis=list(title="Factor",zeroline=F,showticklabels=T))
Run Code Online (Sandbox Code Playgroud)

这给了我:

在此处输入图片说明

除了以下几点,这与我想要的非常接近:

  1. 我希望误差条的颜色类似于效果大小(通过相应的p值)。
  2. 删除trace下面的两个图例colorbar
  3. y轴上的标签顺序为 factors

任何的想法?

r plotly r-forestplot

5
推荐指数
1
解决办法
294
查看次数

需要帮助修改 R 中的森林图代码

我正在尝试使用 meta::forest() 函数在 R 中制作森林图,并且在尝试更改左列时遇到格式问题。整体效果统计数据消失,“作者”列居中对齐。

这是我不更改左列名称时森林图的示例:

原始森林图 在此处输入图片说明

正如您可以在每个“子组”的最底部看到的那样,对于整体效果,显示了统计数据。但是,当我尝试通过在代码中添加一行来将左列更改为“作者”和“测量”时leftcols( )',这些统计信息被删除,列变得居中对齐:

有错误的森林图 在此处输入图片说明

具体来说,我想帮助的是:

  • 将左列名称更改为“作者”和“度量”而不删除整体统计信息
  • 保持列左对齐
  • 增加每列之间的间隙以提高可读性

可重现示例的代码:

ForestPlot <- data.frame(
      stringsAsFactors = FALSE,
                Author = c("Author1","Author2","Author3",
                           "Author4","Author5","Author6","Author7","Author8",
                           "Author9","Author10","Author11","Author12","Author13",
                           "Author14","Author15","Author16","Author17",
                           "Author18","Author19","Author20","Author21","Author22",
                           "Author23","Author24","Author25","Author26","Author27",
                           "Author28","Author29","Author30","Author31","Author32",
                           "Author33"),
                    TE = c(-0.816425,-1.6769,-0.1843,
                           0.2024333,0.6572,-1.2798,-0.3335,-3.3999,-0.7975,
                           -0.2593,-0.1745,-0.1681,-0.816425,-1.7009,-0.2606,
                           -0.2007,-1.1554,-0.2615,-0.8014,-0.2953,-1.0333,-0.7091,
                           0.2301,-0.8444,-0.1545,-0.7629,-1.0476,-0.354,
                           0.0736,-0.4139,0.1353,-0.918,-0.384),
                  seTE = c(0.250827211,0.3012,0.3034,
                           0.3539,0.2456,0.212,0.1861,0.4002,0.2711,0.2964,
                           0.3251,0.325,0.250827211,0.371,0.196,0.2527,0.2363,
                           0.2246,0.2806,0.2844,0.2753,0.3112,0.3173,0.4287,
                           0.4089,0.324,0.3381,0.2242,0.2756,0.2041,0.177,0.3849,
                           0.2828),
                   var = c(0.06291429,0.09072144,
                           0.09205156,0.06713355,0.06031936,0.044944,0.03463321,
                           0.16016004,0.07349521,0.08785296,0.10569001,0.105625,
                           0.06291429,0.137641,0.038416,0.06385729,0.05583769,
                           0.05044516,0.07873636,0.08088336,0.07579009,0.09684544,
                           0.10067929,0.18378369,0.16719921,0.104976,0.11431161,
                           0.05026564,0.10556001,0.04165681,0.031329,0.14814801,
                           0.07997584),
              Subgroup = c("Group1","Group1","Group2",
                           "Group2","Group2","Group1","Group2","Group1","Group2",
                           "Group2","Group2","Group1","Group2","Group1",
                           "Group1","Group2","Group1","Group2","Group1","Group2",
                           "Group1","Group2","Group2","Group2","Group2","Group2",
                           "Group2","Group2","Group1","Group2","Group1",
                           "Group1","Group1"),
               Measure = c("ER","ER","ER","ER","ER",
                           "ER","ER","ER","ER","ER","ER","ER","ER","ER","ER",
                           "ER","ER","ER","ER","ER","ER","ER","ER","ER",
                           "ER","ER","ER","ER","ER","ER","ER","ER","ER")
    )

library(meta)
library(metafor)

#Initial Random Effect Analysis - …
Run Code Online (Sandbox Code Playgroud)

r r-forestplot

5
推荐指数
1
解决办法
510
查看次数

使用metafor包将科学记数法中的标签添加到森林图中

所以我正在使用meta.for包进行荟萃分析R.我正准备在科学期刊上发表数据,我想在我的森林地块中添加p值,但科学注释格式为

x10-04
Run Code Online (Sandbox Code Playgroud) 而不是标准

e-04

然而,争论ilabforest功能不接受expression一流的对象,但仅矢量

这是一个例子:

library(metafor)
data(dat.bcg)

## REM 
res <- rma(ai = tpos, bi = tneg, ci = cpos, di = cneg, data = dat.bcg,
           measure = "RR",
           slab = paste(author, year, sep = ", "), method = "REML")
# MADE UP PVALUES
set.seed(513)
p.vals <- runif(nrow(dat.bcg), 1e-6,0.02)

# Format pvalues so only those bellow 0.01 are scientifically notated
p.vals <- ifelse(p.vals < 0.01, 
                 format(p.vals,digits = 3,scientific …
Run Code Online (Sandbox Code Playgroud)

expression r scientific-notation r-forestplot metafor

3
推荐指数
1
解决办法
485
查看次数

GGPlot2 中带有子组的森林图

作为 R 的新手(没有任何编码经验),我遇到以下问题。我正在尝试创建比值比的分组森林图(斑点图)。横轴应包含 OR。纵轴为变量。每个变量都包含 A 组和 B 组的 OR(包括下限和上限)。因此,垂直轴上显示的每个变量应该可见 2 条线。这个网站和这个网站应该给你一种分组的想法。

我从Mike Barnkob那里找到了一种相当不错的森林图格式,我一直在努力适应我的需求。

我一直在通过stackoverflow(例如这里)。使用这种方法,我必须分割数据帧,我想其他方法也是可能的。

请在下面找到代码,其中仅包含一组虚拟数据框。

df <- data.frame(Outcome=c("Outcome A", "Outcome B", "Outcome C", "Outcome D"),
   OR=c(1.50, 2.60, 1.70, 1.30),
   Lower=c(1.00, 0.98, 0.60, 1.20),
   Upper=c(2.00, 3.01, 1.80, 2.20)
                      )
if (!require('ggplot2')) install.packages('ggplot2'); library('ggplot2')  

Outcome_order <- c('Outcome C', 'Outcome A', 'Outcome B', 'Outcome D')

p <- ggplot(df, aes(x=factor (Outcome, level=Outcome_order), y=OR, ymin=Lower, ymax=Upper)) + 
  geom_linerange(size=5, colour="#a6d8f0") +
  geom_hline(aes(x=0, yintercept=1), lty=2) +
  geom_point(size=3, shape=21, fill="#008fd5", colour="white", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 r-forestplot

2
推荐指数
1
解决办法
1万
查看次数

带有表格ggplot编码的森林图

我试图将一张桌子与我的森林图并排放置,但这样做时遇到了很多麻烦。

我可以使用以下代码制作森林图:

###dataframe
###dataframe
library(ggplot2)
library(tidyr)
library(grid)
library(gridExtra)
library(forcats)


forestdf <- structure(list(labels = structure(1:36, .Label = c("Age*", "Sex – male vs. female", 
                                                               "Body-mass index*,1 ", "Systolic blood pressure*", "Race - vs. white", 
                                                               "Asian", "Black", "Townsend deprivation index", "Social habit", 
                                                               "Smoking - vs. never", "Previous", "Current", "Alcohol use - vs. never", 
                                                               "Once or twice a week", "Three or four times a week", "Daily or almost daily", 
                                                               "Comorbidity", "Cancer", "Diabetes", "Chronic obstructive pulmonary disease2", 
                                                               "Asthma", "Ischemic heart disease3", "Hypothyroidism", "Hypercholesterolemia", 
                                                               "Allergic rhinitis", …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 geom-text r-forestplot

1
推荐指数
1
解决办法
2337
查看次数

R 中对数标度的优势比图

我在绘制 GLM logit 模型的结果以在对数刻度上显示为优势比时遇到了困难。最终,我想从不同的模型中获得估计值,并将结果绘制在一张图上,如下所示(https://www.ctspedia.org/do/view/CTS...ClinAEGraph001)。你有什么见解吗?

statistics plot r logistic-regression r-forestplot

0
推荐指数
1
解决办法
4522
查看次数