如何在ggsurvplot中插入图像?

cgyqldqp  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(127)

我想在ggsurvplot内/上方插入图像。如何实现?
让我们画一个ggsurvplot的最小工作示例:

require (survminer)
require (survival)
fit2 <- survfit (Surv (entry, futime, death) ~ 1, myeloma)
ggsurvplot (fit2,
            data = myeloma,
            ggtheme = theme_gray(),
            legend = "none",
            risk.table = TRUE)

我如何在这个ggsurvplot上插入一个图像,例如R_logo来产生这样的东西(图像用Powerpoint组装)?

我知道如何使用“标准”ggplot,但不是ggsurvplot。
有线索吗
提前感谢您的帮助。
查尔斯

ccrfmcuu

ccrfmcuu1#

将图像添加到生存图的一个选项是使用ggplot2::annotation_custom。与默认ggplot相比,唯一的区别是ggruvplot是一个列表,其中图存储为名为plot的元素。因此,我们必须将图像添加到这个列表元素:

require(survminer)
require(survival)
library(ggplot2)

fit2 <- survfit(Surv(entry, futime, death) ~ 1, myeloma)

gg <- ggsurvplot(fit2,
  data = myeloma,
  ggtheme = theme_gray(),
  legend = "none",
  risk.table = TRUE
)

fn <- tempfile(pattern = ".png")
download.file("https://www.r-project.org/logo/Rlogo.png", fn)
image <- png::readPNG(fn)
gg$plot <- gg$plot +
  annotation_custom(
    grob = grid::rasterGrob(
      image = image,
      x = unit(1, "npc") - unit(1, "mm"),
      y = unit(1, "npc") - unit(1, "mm"),
      vjust = 1, hjust = 1,
      width = unit(.25, "npc"),
      height = unit(.25, "npc")
    )
  )

gg

编辑在图像周围添加黑框的一个选项是通过第二个annotation_custom在图像顶部添加rectGrob

gg$plot <- gg$plot +
  annotation_custom(
    grob = grid::rasterGrob(
      image = image,
      x = unit(1, "npc") - unit(1, "mm"),
      y = unit(1, "npc") - unit(1, "mm"),
      vjust = 1, hjust = 1,
      width = unit(.25, "npc"),
      height = unit(.25, "npc")
    )
  ) +
  annotation_custom(
    grob = grid::rectGrob(
      x = unit(1, "npc") - unit(1, "mm"),
      y = unit(1, "npc") - unit(1, "mm"),
      vjust = 1, hjust = 1,
      width = unit(.25, "npc"),
      height = unit(.25, "npc"),
      gp = grid::gpar(col = "black", fill = NA)
    )
  )

gg

相关问题