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

forestplot()函数绘制森林图的自定义需求求助

解决forestplot自定义需求:列顺序调整、参考线样式及X轴文字放大

针对你提出的三个自定义需求,以下是具体的解决方案及修改后的完整代码:

1. 调整Estimate和p值列到森林图区域之后

forestplot默认左侧是labeltext定义的列,森林图居中展示,右侧列需要通过fp_add_cols()主动添加。修改时将labeltext仅保留左侧需要展示的列(Metabolite、Sleep_factor),再用fp_add_cols()把Estimate和p值列添加到森林图右侧。

2. 设置红色虚线0参考线

使用fp_add_lines()函数,指定h=0定位参考线在0值位置,同时设置linetype="dashed"和col="red"实现红色虚线效果。

3. 放大X轴文字及标题尺寸

通过fp_set_style()中的cex.lab参数调整X轴标题大小,cex.axis参数调整X轴刻度文字大小;也可单独使用fp_set_xaxis()精准设置刻度文字尺寸。


修改后的完整代码

# Example data
sleep_duration_long_WD_sig <- data.frame(
  Metabolite = c("Met1", "Met2", "Met3"),
  Sleep_factor = c("Factor1", "Factor2", "Factor3"),
  Beta_val_robust = c(0.5, -0.3, 0.7),
  CI_low = c(0.9, -0.5, 0.49),
  CI_high = c(0.8, -0.1, 1.0),
  p_val_robust = c(0.05, 0.001, 0.003)
)

# Code for plot
sleep_duration_long_WD_forest_plot <- sleep_duration_long_WD_sig %>%
  arrange(Beta_val_robust)%>%
  mutate(mean=Beta_val_robust,
         lower = CI_low,
         upper = CI_high)%>%
  mutate(est = sprintf("%.3f [%.3f to %.3f]", 
                        mean, lower, upper), 
         p_val_robust = sprintf("%.3f", p_val_robust)) %>% 
  forestplot(labeltext = c(Metabolite, Sleep_factor),  # 仅保留左侧展示列
             xlab = "Estimate",
             title = "Forest plot",
             boxsize = 0.5,
             cex = 1) %>%
  fp_set_style(box = "black",
               line = "black",
               cex.lab = 1.2,  # 放大X轴标题
               cex.axis = 1.1) %>%  # 放大X轴刻度文字
  fp_add_lines(h = 0, linetype = "dashed", col = "red") %>%  # 添加红色虚线参考线
  fp_add_cols(  # 在森林图右侧添加Estimate和p值列
    `Estimate` = est,
    `p-value` = p_val_robust
  )

# 输出绘图
print(sleep_duration_long_WD_forest_plot)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:32:49