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

如何在R的forestplot中单独增大数字及X轴标签字号

问题:forestplot仅放大数字与X轴标签字号,保留行列标签字号

使用R的forestplot包绘制多队列患者生存结局森林图时,希望仅增大图中所有数字以及X轴标签、刻度的字号,同时保持行列标签(如队列名称、指标名称)的字号不变。目前修改txt_gp中gpar(cex)参数会全局改变所有文本字号,无法实现精准控制。


解决方案

利用forestplot的txt_gp参数支持按列设置文本样式的特性,对行列标签列和数字列分别指定字号,同时单独配置X轴相关元素的字号。

修改后的完整代码

library(forestplot)

xticks <- seq(from = 0, to = 5, by = 1)
jpeg(filename = "./Forestplot.jpg",
     units = "in",
     width = 45,
     height = 32,
     res = 600)
forestplot(labeltext = tabletext,
           graph.pos = 3,
           mean = c(NA, data$HR),
           lower = c(NA, data$CI_Low),
           upper = c(NA, data$CI_High),
           hrzl_lines = list("1" = gpar(lwd = 1,
                                        col = "#99999922"),
                             "4" = gpar(lwd = 200,
                                        lineend = "butt",
                                        columns = c(2:9),
                                        col = "#99999922"),
                             "8" = gpar(lwd = 200,
                                        lineend = "butt",
                                        columns = c(2:9),
                                        col = "#99999922"),
                             "12" = gpar(lwd = 200,
                                         lineend = "butt",
                                         columns = c(2:9),
                                         col = "#99999922"),
                             "16" = gpar(lwd = 200,
                                         lineend = "butt",
                                         columns = c(2:9),
                                         col = "#99999922"),
                             "20" = gpar(lwd = 200,
                                         lineend = "butt",
                                         columns = c(2:9),
                                         col = "#99999922"),
                             "24" = gpar(lwd = 200,
                                         lineend = "butt",
                                         columns = c(2:9),
                                         col = "#99999922"),
                             "28" = gpar(lwd = 200,
                                         lineend = "butt",
                                         columns = c(2:9),
                                         col = "#99999922")),
           # 核心修改:按列设置文本样式,单独控制数字列与行列标签列字号
           txt_gp = fpTxtGp(
             label = list(
               gpar(cex = 2.5, fontface = "bold"),  # 第1列:行列标签,保持原字号
               rep(gpar(cex = 3.5, fontface = "bold"), 7)  # 第2-8列:数字列,设置更大字号
             ),
             summary = gpar(cex = 5, fontface = "bold"),
             ticks = gpar(cex = 3.5, fontface = "bold"),  # X轴刻度字号
             xlab = gpar(cex = 3.5, fontface = "bold")    # X轴标签字号
           ),
           col = fpColors(box = "black",
                          lines = "black",
                          zero = "gray50"),
           xticks = xticks,
           zero = 1,
           lineheight = "auto",
           boxsize = 0.2,
           colgap = unit(6, "mm"),
           lwd.ci = 3,
           lwd.zero = 5,
           lwd.xaxis = 5,
           ci.vertices = TRUE,
           ci.vertices.height = 0.4,
           grid = gpar(lwd = 0.4, 
                       col = "black"))
dev.off()

关键说明

  1. 按列控制文本样式:txt_gp$label传入列表时,列表元素与labeltext的列一一对应。这里第1列是行列标签(如"Cohort"、"Patients"等),设置较小字号;第2到8列均为数字内容,通过rep()统一设置更大字号。
  2. X轴元素单独配置:ticks控制X轴刻度数字的字号,xlab控制X轴标题的字号,确保这两部分也符合放大需求。
  3. 可根据实际需求调整cex的数值,比如将行列标签的cex设为原代码中的3.5,数字列设为4.0等,灵活适配可视化效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:37:02