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

如何在R的forestplot包森林图X轴显示带小数刻度标签

解决forestplot包X轴刻度标签显示小数格式的问题

核心原因

forestplot默认会自动格式化X轴刻度标签,即使你在xticks中传入带小数的数值,它也会根据数值类型自动舍入显示(比如1.0会显示为1),因此需要手动指定刻度的文本标签。

解决方案1:使用xticks.arg参数指定自定义标签

通过xticks.arg参数,同时定义刻度位置和对应的文本标签,强制显示小数格式:

# 补充labels变量(用户代码中缺失,实际替换为你的分组标签)
labels <- matrix(rep("", length(adjusted_rr)), ncol = 1)

forestplot(labeltext = labels,
           mean = adjusted_rr, 
           lower = lower_ci, 
           upper = upper_ci,
           zero = 1.0,
           xlog = FALSE,
           xlab = "Adjusted Rate Ratio",
           boxsize = 0.2,
           is.summary = is.na(adjusted_rr),
           # 指定刻度位置和自定义小数格式标签
           xticks.arg = list(
             at = c(0.5, 1.0, 1.5, 2.0),
             labels = sprintf("%.1f", c(0.5, 1.0, 1.5, 2.0))
           ),
           line.margin = 0.4,
           graph.pos = 2,
           new_page = TRUE,
           txt_gp = fpTxtGp(label = gpar(cex = 0.8), 
                            ticks = gpar(cex = 0.8), 
                            xlab = gpar(cex = 1)),
           grid = TRUE)

解决方案2:自定义轴绘制函数(axis_fun)

如果需要更灵活的轴控制,可以通过axis_fun参数传入自定义的轴绘制函数,手动设置标签格式:

# 自定义轴函数,强制保留1位小数
custom_axis <- function(at, ...) {
  axis(side = 1, at = at, labels = sprintf("%.1f", at), ...)
}

labels <- matrix(rep("", length(adjusted_rr)), ncol = 1)

forestplot(labeltext = labels,
           mean = adjusted_rr, 
           lower = lower_ci, 
           upper = upper_ci,
           zero = 1.0,
           xlog = FALSE,
           xlab = "Adjusted Rate Ratio",
           boxsize = 0.2,
           is.summary = is.na(adjusted_rr),
           xticks = c(0.5, 1.0, 1.5, 2.0),
           # 使用自定义轴函数
           axis_fun = custom_axis,
           line.margin = 0.4,
           graph.pos = 2,
           new_page = TRUE,
           txt_gp = fpTxtGp(label = gpar(cex = 0.8), 
                            ticks = gpar(cex = 0.8), 
                            xlab = gpar(cex = 1)),
           grid = TRUE)

额外说明

  • sprintf("%.1f", x)会把数值格式化为保留1位小数的字符串,若需要更多小数位,可修改格式符(比如%.2f保留2位)。
  • 示例中补充的labels变量为占位用,实际使用时替换为你的分组标签即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:43:31