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

如何使用metaviz包调整森林图标签的小数位数?

调整metaviz森林图CI标注的小数位数

问题描述

使用metaviz包的viz_forest函数绘制森林图时,右侧带置信区间(CI)的估计值默认只保留两位小数,需要修改为保留三位小数。

原代码:

viz_forest(x = dfamce_ordered[1:20, c("amce", "std")],
           study_labels = dfamce_ordered[1:20, c("country")],
           summary_label = "Summary Effect", 
           xlab = "AMCE", 
           annotate_CI = TRUE)

数据:

dfamce_ordered <- structure(list(amce = c(0.102243018346973, 0.0682493096502726, 
0.0669067622543539, 0.0599407268674782, 0.0504396688405717, 0.0484962116195263, 
0.0457041669923713, 0.0430856080509793, 0.0414650636376924, 0.0388962366915576, 
0.0313556995623549, 0.0308907944434052, 0.027261193097714, 0.0270736858953663, 
0.0185393787585495, 0.013927001415788, 0.00989105057091642, 0.00558431178605058, 
-0.00328687062104834, -0.0378235020967646), std = c(0.0121135533945813, 
0.0126226498023255, 0.0124988950034267, 0.0121412322564469, 0.0112794869488059, 
0.0119370400101144, 0.0125916409337608, 0.0116812636593066, 0.0116262083546671, 
0.0119836659476091, 0.0124695971997358, 0.01251991561798, 0.0114894773255983, 
0.012538903134963, 0.0131449572085337, 0.0134171003637553, 0.0144683803996521, 
0.0128400262884722, 0.0119044068536946, 0.0123140943445314), 
    country = c("Brazil", "Spain", "Mexico", "Denmark", "Argentina", 
    "Japan", "Turkey", "Germany", "Romania", "Hungary", "USA", 
    "Kenya", "South Africa", "India", "Nigeria", "Lithuania", 
    "Ukraine", "Morocco", "Malaysia", "Indonesia")), class = "data.frame", row.names = c(NA, 
-20L))

解决方案

viz_forest没有直接设置小数位数的参数,但可以通过自定义标注函数实现三位小数显示:

  1. 自定义格式化函数,计算95%置信区间并将所有数值格式化为三位小数;
  2. 在viz_forest中指定自定义函数,同时关闭默认标注逻辑。

修改后的代码:

# 自定义标注函数:保留三位小数并格式化CI
format_ci_3digits <- function(est, se) {
  lower <- est - 1.96 * se
  upper <- est + 1.96 * se
  # 格式化估计值和CI为三位小数
  sprintf("%.3f (%.3f, %.3f)", est, lower, upper)
}

# 调用viz_forest,使用自定义标注函数
viz_forest(x = dfamce_ordered[1:20, c("amce", "std")],
           study_labels = dfamce_ordered[1:20, c("country")],
           summary_label = "Summary Effect", 
           xlab = "AMCE", 
           annotate_CI = FALSE,  # 关闭默认标注
           annotate_fun = format_ci_3digits)  # 使用自定义函数

说明

  • 函数中的1.96对应95%置信区间的临界值,若需其他置信水平可替换(如99%用2.576);
  • sprintf("%.3f", ...)是核心格式化语句,%.3f表示保留三位小数;
  • 必须关闭annotate_CI = FALSE,避免默认标注和自定义标注重复显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:15:07