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

如何调整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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:43:13