使用ggplot2 [编辑]的初学者简单示例的森林图

ykl*_*ykl 6 plot r

我想用ggplot2创建一个森林图.

目标是创建一个包含名为X1,X2,X3,X4,X5和X6的6行的森林图.这些标签应出现在左侧.垂直虚线应出现在x = 1处.此外,在图的右侧,平均值后跟95%CI应出现在每一行.

我的数据具有以下平均值,较低的95%间隔和较高的95%间隔:

mean  <- c(1.29,0.76,2.43,1.68,1.22,1.7) 
lower <- c(0.84,0.50,1.58,1.1,0.8,1.11)
upper <- c(1.95,1.16,3.67,2.54,1.85,2.56)
Run Code Online (Sandbox Code Playgroud)

其中X1对应于1.29(0.84,1.95)等等.

我希望这不是一个问题,并希望这可以作为那些不熟悉R中的森林情节的人的指南,比如我自己.

Lor*_*z D 17

如果您是R的新手,ggplot2可能是一个不错的选择:基本语法适用于许多不同类型的图.

这是你的geom_pointrange简单森林情节的例子.唯一的技巧是ggplot线图通常在x轴上放置标签,在y轴上放置定量数据; 这可以通过"coord_flip"功能更改,然后在创建绘图之前反转标签的顺序:

label <- paste0("X", 1:6)
mean  <- c(1.29,0.76,2.43,1.68,1.22,1.7) 
lower <- c(0.84,0.50,1.58,1.1,0.8,1.11)
upper <- c(1.95,1.16,3.67,2.54,1.85,2.56)

df <- data.frame(label, mean, lower, upper)

# reverses the factor level ordering for labels after coord_flip()
df$label <- factor(df$label, levels=rev(df$label))

library(ggplot2)
fp <- ggplot(data=df, aes(x=label, y=mean, ymin=lower, ymax=upper)) +
        geom_pointrange() + 
        geom_hline(yintercept=1, lty=2) +  # add a dotted line at x=1 after flip
        coord_flip() +  # flip coordinates (puts labels on y axis)
        xlab("Label") + ylab("Mean (95% CI)") +
        theme_bw()  # use a white background
print(fp)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我设法自己找到了答案: fp + geom_text(aes(y = labpos,label = meanci,hjust=0)) 其中 labpos 是一个具有相同值的向量,即您希望标签在 y 轴上的位置和 meanci是一个字符,即 1.29 (0.84,1.95) 等。 (3认同)