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

如何在R的forestplot中仅将第二列的r设为斜体?

实现forestplot第二列仅r斜体的方法

当然可以实现这个需求!核心思路是将第二列的文本转换为R表达式(expression),通过表达式单独控制r的字体样式,数字部分保持正常格式。以下是修改后的完整代码及说明:

修改后的代码

library("forestplot")
data(HRQoL)

# 定义颜色样式
clrs <- fpColors(box="royalblue", line="darkblue", summary="royalblue")

# 生成带样式的第二列文本:用bquote创建表达式,仅r设为斜体
tabletext <- cbind(
  rownames(HRQoL$Sweden),
  # 遍历每个系数,生成italic(r) == 0.xx的表达式
  mapply(function(coef_val) {
    bquote(italic(r) == .(sprintf("%.2f", coef_val)))
  }, HRQoL$Sweden[,"coef"])
)

# 绘制森林图,调整txt_gp参数适配表达式文本
forestplot(
  tabletext,
  txt_gp = fpTxtGp(
    label = list(
      # 第一列保持斜体设置
      gpar(fontfamily = "Times", fontface="italic"),
      # 第二列用正常字体(表达式已单独控制r的样式)
      gpar(fontfamily = "", col = "blue")
    ),
    ticks = gpar(fontfamily = "", cex=1),
    xlab = gpar(fontfamily = "HersheySerif", cex = 1.5)
  ),
  rbind(HRQoL$Sweden),
  col=clrs,
  xlab="EQ-5D index"
)

关键修改说明

  1. 第二列文本生成:
    用mapply遍历每个系数值,结合bquote()创建表达式:

    • italic(r):将r设置为斜体
    • .(sprintf("%.2f", coef_val)):把格式化后的系数值插入表达式,保持正常字体
  2. txt_gp参数调整:
    第二列的label设置恢复为正常字体(无需再整体设斜体),因为表达式已经单独定义了r的样式。

这样绘制出的森林图,第二列只有r是斜体,数字部分保持原有字体样式,完全符合你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:51:47