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
相关产品推荐
相关产品推荐

