我正在尝试创建一个森林图,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)
这给了我:
除了以下几点,这与我想要的非常接近:
trace下面的两个图例colorbarfactors任何的想法?
我正在尝试使用 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) 所以我正在使用meta.for包进行荟萃分析R.我正准备在科学期刊上发表数据,我想在我的森林地块中添加p值,但科学注释格式为
x10-04Run Code Online (Sandbox Code Playgroud) 而不是标准
e-04
然而,争论ilab的forest功能不接受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) 作为 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) 我试图将一张桌子与我的森林图并排放置,但这样做时遇到了很多麻烦。
我可以使用以下代码制作森林图:
###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) 我在绘制 GLM logit 模型的结果以在对数刻度上显示为优势比时遇到了困难。最终,我想从不同的模型中获得估计值,并将结果绘制在一张图上,如下所示(https://www.ctspedia.org/do/view/CTS...ClinAEGraph001)。你有什么见解吗?
r ×6
r-forestplot ×6
ggplot2 ×2
plot ×2
expression ×1
geom-text ×1
metafor ×1
plotly ×1
statistics ×1