如何调整R语言forestplot包中汇总菱形的大小?
调整forestplot包中汇总菱形的尺寸
R语言forestplot包支持修改森林图中方块的颜色与大小,但默认的汇总菱形仅能通过col、fill参数调整颜色,无法直接修改尺寸。要缩小菱形,可以通过以下两种方法实现:
方法1:通过gpar的scale参数快速缩放
在fp_set_style的summary参数对应的gpar配置中添加scale参数,设置小于1的数值即可缩小菱形(大于1则放大)。修改后的示例代码如下:
# 加载依赖包 library(dplyr) library(tidyr) library(forestplot) # 绘制森林图并调整汇总菱形大小 forestplot(labeltext = cbind(Author = c("Smith et al", "Smooth et al", "Al et al")), mean = cbind(1:3, 1.5:3.5), lower = cbind(0:2, 0.5:2.5), upper = cbind(4:6, 5.5:7.5), is.summary = c(FALSE, FALSE, TRUE), vertices = TRUE) |> fp_set_style(default = gpar(lineend = "square", linejoin = "mitre", lwd = 1, col = "black"), box = gpar(fill = "black", col = "red"), lines = list( gpar(lwd = 1), gpar(lwd = 1), gpar(), gpar(), gpar(lwd = 1), gpar(lwd = 1) ), summary = list( # scale设为0.6,将菱形缩小至原尺寸的60% gpar(fill = "violet", col = "gray", lwd = 1, scale = 0.6), gpar(fill = "orange", col = "gray", lwd = 1, scale = 0.6) ))
方法2:自定义汇总图形(精细控制)
如果需要更灵活的尺寸或形状控制,可使用fp_custom_summary函数自定义绘制菱形,通过调整顶点坐标精准控制大小。示例代码如下:
# 加载依赖包 library(dplyr) library(tidyr) library(forestplot) # 绘制森林图并自定义汇总菱形 forestplot(labeltext = cbind(Author = c("Smith et al", "Smooth et al", "Al et al")), mean = cbind(1:3, 1.5:3.5), lower = cbind(0:2, 0.5:2.5), upper = cbind(4:6, 5.5:7.5), is.summary = c(FALSE, FALSE, TRUE), vertices = TRUE) |> fp_set_style(default = gpar(lineend = "square", linejoin = "mitre", lwd = 1, col = "black"), box = gpar(fill = "black", col = "red"), lines = list( gpar(lwd = 1), gpar(lwd = 1), gpar(), gpar(), gpar(lwd = 1), gpar(lwd = 1) )) |> fp_custom_summary( summary = function(x, y, clr, size = 0.3, ...) { grid::grid.polygon( # 通过调整size值控制菱形大小 x = c(x, x + size, x, x - size), y = c(y + size, y, y - size, y), gp = grid::gpar(fill = clr$fill, col = clr$col, lwd = clr$lwd) ) }, clr = list( list(fill = "violet", col = "gray", lwd = 1), list(fill = "orange", col = "gray", lwd = 1) ) )
方法1操作简单,适合快速调整;方法2自由度更高,可按需定制菱形的细节。
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

