0

autoplot我想向使用ggfortify包创建的生存分析图(Kaplan-Meier 曲线)添加一条新线和置信带。

但是,我在使用时收到错误,geom_ribbon但在使用时却没有geom_line。下面的最小示例说明了这个问题。

# Load packages and data
library(survival)
library(ggfortify)
data(aml, package = "survival")

# Fit the Kaplan-Meier curve
fit <- survfit(Surv(time, status) ~ x, data=aml)

# Create an additional dataset to plot on top of the Kaplan-Meier curve
df <- data.frame(x = seq(1, 150, length.out=10),
                 y = seq(0, 1, length.out=10),
                 ymin = seq(0, 1, length.out=10) - 0.1,
                 ymax = seq(0, 1, length.out=10) + 0.1)

这有效

autoplot(fit, conf.int = FALSE, censor = FALSE) +
  geom_line(data = df, mapping = aes(x=x, y=y)) +
  geom_line(data = df, mapping = aes(x=x, y=ymin)) +
  geom_line(data = df, mapping = aes(x=x, y=ymax))

在此处输入图像描述

这不起作用

autoplot(fit, conf.int = FALSE, censor = FALSE) +
  geom_ribbon(data = df, mapping = aes(x=x, ymin=ymin, ymax=ymax))
Error in FUN(X[[i]], ...) : object 'surv' not found
4

1 回答 1

1

如果您指定避免inherit.aes = FALSEgeom_ribbon()特定错误,即

library(survival)
#install.packages("ggfortify")
library(ggfortify)
#> Warning: package 'ggfortify' was built under R version 4.1.2
#> Loading required package: ggplot2
data(aml, package = "survival")
#> Warning in data(aml, package = "survival"): data set 'aml' not found

# Fit the Kaplan-Meier curve
fit <- survfit(Surv(time, status) ~ x, data=aml)

# Create an additional dataset to plot on top of the Kaplan-Meier curve
df <- data.frame(x = seq(1, 150, length.out=10),
                 y = seq(0, 1, length.out=10),
                 ymin = seq(0, 1, length.out=10) - 0.1,
                 ymax = seq(0, 1, length.out=10) + 0.1)

autoplot(fit, conf.int = FALSE, censor = FALSE) +
  geom_line(data = df, mapping = aes(x=x, y=y)) +
  geom_line(data = df, mapping = aes(x=x, y=ymin)) +
  geom_line(data = df, mapping = aes(x=x, y=ymax))

autoplot(fit, conf.int = FALSE, censor = FALSE) +
  geom_ribbon(data = df, mapping = aes(x=x, ymin=ymin, ymax=ymax),
              inherit.aes = FALSE)

reprex 包于 2022-02-21 创建(v2.0.1)

这能解决你的问题吗?

于 2022-02-21T04:16:48.567 回答