You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在forestplot森林图中基于截断值1添加分组标签

在forestplot森林图的截断值1处添加Yes/No分组标签

需求

用R语言forestplot包绘制森林图时,需要在x=1的截断线位置添加两个标签:上方标注Yes(对应OR值大于1的组别),下方标注No(对应OR值小于1的组别),预期效果如下:

预期森林图效果

数据与现有代码

数据

library(forestplot)
# 构造可直接运行的数据框
dataout <- data.frame(
  variables = c("Mother", "sibling", "X1", "X2", "X3", "X4", "X5", "X6", "X7"),
  mean = c(0.9411774, 0.8714648, 1.1250240, 1.1792050, 1.0473570, 1.5371143, 1.3714805, 0.8939320, 0.7126186),
  lower = c(0.8968472, 0.7983499, 1.0106318, 1.0062237, 0.8227960, 1.2682586, 1.1762861, 0.7480613, 0.5683382),
  upper = c(0.9876988, 0.9512757, 1.2523641, 1.3819239, 1.3332062, 1.8629644, 1.5990656, 1.0682473, 0.8935264)
)

现有绘图代码

dataout |>
  forestplot(labeltext = variables,
             zero = 1,
             xlog = TRUE,
             vertices = TRUE,
             boxsize = 0.2) |>
  fp_set_style(box = "royalblue",
               line = "darkblue",
               summary = "royalblue") |>
  fp_set_zebra_style("#EFEFEF")

实现方法

借助fp_annotate()函数在指定坐标位置添加标签,调整y参数控制标签上下位置,代码如下:

library(forestplot)
library(grid)

dataout |>
  forestplot(labeltext = variables,
             zero = 1,
             xlog = TRUE,
             vertices = TRUE,
             boxsize = 0.2) |>
  fp_set_style(box = "royalblue",
               line = "darkblue",
               summary = "royalblue") |>
  fp_set_zebra_style("#EFEFEF") |>
  # 在截断线上方添加Yes标签
  fp_annotate(x = 1, y = 1.2, label = "Yes", just = "right", gp = gpar(fontsize = 10)) |>
  # 在截断线下方添加No标签(根据数据行数动态定位)
  fp_annotate(x = 1, y = nrow(dataout) + 0.8, label = "No", just = "right", gp = gpar(fontsize = 10))

细节说明

  • x=1:指定标签在截断值1的位置;
  • y参数:y=1.2对应图顶端的上方区域,y=nrow(dataout)+0.8对应图底端的下方区域(动态适配数据行数,避免硬编码);
  • just="right":让标签右对齐,紧贴x=1的竖线;
  • gpar(fontsize):可根据需求调整标签字体大小,匹配图的整体风格。

如果需要更精准的位置控制,可以结合grid包的坐标转换函数微调:

# 示例:基于绘图区域比例定位
fp_annotate(x = unit(convertX(unit(1, "native"), "npc", axisFrom = "x"), "native"),
            y = unit(0.95, "npc"), label = "Yes", just = "right")

内容的提问来源于stack exchange,提问作者cliu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:20:28