军官包接受 ggsurvplot-object 吗?

问题描述

我正在尝试将 ggsurvplot 对象导出到带有官员包的 powerpoint,但没有成功。我能够找到很多关于如何使用现在过时的 ReporterS 包的说明,并提到了官员也应该工作。文档中似乎没有提到这一点。那么这应该有效吗?是否可以使用这些工具将矢量化生存图绘制到 pptx 幻灯片

totsur <- ggsurvplot(yhd1,data = sappivertailu,combine=TRUE,xlab = "Time,months",ylab="Survival",title="Overall survival",lwd=2,palette="jco",xscale = "d_m",xlim = c(0,730.5),break.x.by = 91.3,risk.table = TRUE,pval = TRUE,fontsize = 3)
totsur
my_vec_graph <- dml(code = totsur)

doc <- read_pptx()
doc <- add_slide(doc,layout = "Overall survival",master = "Office Theme")
doc <- ph_with(doc,my_vec_graph,location = ph_location_fullsize() )
print(doc,target = "Sappitutkimus/Charts/survi1.pptx")

更改 dml(ggobj = totsur) 都不起作用。我做错了什么?

编辑:感谢下面的所有评论!还有一个更新。数据没有任何问题。经过一些调试,我的原始数据产生了预期的结果。

还有一个问题。包似乎无法在同一张幻灯片添加风险表和生存曲线。是的,您可以通过在单独的幻灯片上制作两个单独的图来传递这一点,但我认为这不是一个好习惯。

如果我没记错的话,警官和记者有一些共同的代码,这个问题也存在。 https://github.com/kassambara/survminer/issues/314

有没有人知道解决这个问题的方法?这是我目前使用的更紧凑的块。否则这工作正常。

yhd1 <- survfit(Surv(sappivertailu$Survi,sappivertailu$Kuolema) ~ Arm,data=koe)

totsur <- 
  ggsurvplot(yhd1,combine = TRUE,#     risk.table = TRUE,fontsize = 3
           )
totsur
my_vec_graph <- rvg::dml(ggobj = last_plot())

doc <- read_pptx()
doc <- add_slide(doc,layout = "Title and Content",target = "Sappitutkimus/Charts/survi1.pptx")

Edit n:o 2: 以及关于所需结果的提示

Number at risk table included

解决方法

当然可以导出 ggsurvplot。通过 officer 到 pptx。您的代码有两个问题。首先,您必须使用 rvg::dml(ggobj = ...) 。其次你设置layout = "Overall survival"。但是在 officer 附带的默认 pptx 中没有具有此名称的布局,即您只能使用存在于 pptx 模板中的布局。解决这两个问题并使用 ggsurvplot 文档中的基本示例:

require("survival")
#> Loading required package: survival
library(survminer)
#> Loading required package: ggplot2
#> Loading required package: ggpubr
library(officer)

fit<- survfit(Surv(time,status) ~ sex,data = lung)

# Basic survival curves
ggsurvplot(fit,data = lung)


my_vec_graph <- rvg::dml(ggobj = last_plot())

doc <- read_pptx()
doc <- add_slide(doc,layout = "Title and Content",master = "Office Theme")
doc <- ph_with(doc,my_vec_graph,location = ph_location_fullsize() )
print(doc,target = "survi2.pptx")

enter image description here

编辑如果您想在同一张幻灯片上有多个内容,您可以将布局更改为 Two Content 并使用 ph_location_left/right

doc <- read_pptx()
doc <- add_slide(doc,layout = "Two Content",location = ph_location_left() )
doc <- ph_with(doc,location = ph_location_right() )
print(doc,target = "survi2.pptx")