This question already has answers here:
Create a ggplot2 survival curve with censored table
(2 个回答)
5年前关闭。
我想要生存估计的置信区间的阴影。现在我有黑线。
设置
然而,这只是大部分正确,因为我们希望置信区间也使用阶跃函数。为了得到我们想要的东西,我们可以使用 this link 中的一些代码为 geom_ribbon 创建一个新的
使用新的
(2 个回答)
5年前关闭。
我想要生存估计的置信区间的阴影。现在我有黑线。
library(survival)
library(ggplot2)
library(GGally)
data(lung)
sf.sex <- survfit(Surv(time, status) ~ sex, data = lung)
pl.sex <- ggsurv(sf.sex, CI = TRUE)
pl.sex
最佳答案
这是一个简单的,几乎正确的解决方案:
pl.sex <- ggsurv(sf.sex, CI = FALSE) +
geom_ribbon(aes(ymin=low,ymax=up,fill=group),alpha=0.3)
设置
CI = FALSE
以去除虚线 CI 带,然后添加 geom_ribbon()
以获得您想要的置信带。然而,这只是大部分正确,因为我们希望置信区间也使用阶跃函数。为了得到我们想要的东西,我们可以使用 this link 中的一些代码为 geom_ribbon 创建一个新的
stat
称为“stepribbon”,如下所示:library(proto)
stairstepn <- function( data, direction="hv", yvars="y" ) {
direction <- match.arg( direction, c( "hv", "vh" ) )
data <- as.data.frame( data )[ order( data$x ), ]
n <- nrow( data )
if ( direction == "vh" ) {
xs <- rep( 1:n, each = 2 )[ -2 * n ]
ys <- c( 1, rep( 2:n, each = 2 ) )
} else {
ys <- rep( 1:n, each = 2 )[ -2 * n ]
xs <- c( 1, rep( 2:n, each = 2))
}
data.frame(
x = data$x[ xs ]
, data[ ys, yvars, drop=FALSE ]
, data[ xs, setdiff( names( data ), c( "x", yvars ) ), drop=FALSE ]
)
}
stat_stepribbon <- function( mapping=NULL, data=NULL, geom="ribbon", position="identity" ) {
StatStepribbon$new( mapping=mapping, data=data, geom=geom, position=position )
}
StatStepribbon <- proto(ggplot2:::Stat, {
objname <- "stepribbon"
desc <- "Stepwise area plot"
desc_outputs <- list(
x = "stepped independent variable",
ymin = "stepped minimum dependent variable",
ymax = "stepped maximum dependent variable"
)
required_aes <- c( "x", "ymin", "ymax" )
default_geom <- function(.) GeomRibbon
default_aes <- function(.) aes( x=..x.., ymin = ..y.., ymax=Inf )
calculate <- function( ., data, scales, direction = "hv", yvars = c( "ymin", "ymax" ), ...) {
stairstepn( data = data, direction = direction, yvars = yvars )
}
examples <- function(.) {
DF <- data.frame( x = 1:3, ymin = runif( 3 ), ymax=rep( Inf, 3 ) )
ggplot( DF, aes( x=x, ymin=ymin, ymax=ymax ) ) + stat_stepribbon()
}
})
使用新的
stat
您可以获得我认为您真正在寻找的解决方案:pl.sex <- ggsurv(sf.sex, CI = FALSE) +
geom_ribbon(aes(ymin=low,ymax=up,fill=group),stat="stepribbon",alpha=0.3) +
guides(fill=guide_legend("sex"))
关于r - 如何在 ggplot 2 生成的 Kaplan-Meier 图中向置信区间添加阴影和颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33874909/
10-10 18:25