3

我正在尝试使用officer-package 将ggsurvplot-object 导出到powerpoint,但没有成功。我能够找到很多关于如何使用现在已经过时的 ReporterS-package 的说明,并提到一些官员也应该工作。文档中似乎没有提到这一点。那么这应该工作吗?是否可以使用这些工具将矢量化生存图绘制到 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,
           data = sappivertailu,
      #     risk.table = TRUE,
           pval = TRUE,
           fontsize = 3
           )
totsur
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 = "Sappitutkimus/Charts/survi1.pptx")

编辑n:o 2:以及有关所需结果的提示。 包括风险表中的数字

4

2 回答 2

3

当然可以导出ggsurvplots。到 pptx 通过officer. 您的代码有两个问题。首先你必须利用rvg::dml(ggobj = ...). 第二个你设置layout = "Overall survival"。但是在默认的 pptx 中没有这个名字的布局officer,也就是说你只能使用 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")

在此处输入图像描述

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

doc <- read_pptx()
doc <- add_slide(doc, layout = "Two Content", master = "Office Theme")
doc <- ph_with(doc, my_vec_graph, location = ph_location_left() )
doc <- ph_with(doc, my_vec_graph, location = ph_location_right() )
print(doc, target = "survi2.pptx")
于 2021-01-24T11:33:22.667 回答
0

令我惊讶的是,如果您将生存情节嵌入到语句中,则可以使用其中的code =论点。一定要包括:dml()print()newpage = FALSE

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
p = ggsurvplot(fit, data = lung, risk.table = TRUE)
    
my_vec_graph <- rvg::dml(code = print(p, newpage = FALSE))

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")
于 2021-12-25T01:31:38.907 回答