在 ggsurvplot 中将 xlim 更改为笛卡尔坐标
Change xlim to cartesion coordinates in ggsurvplot
我想创建一个 95%-CI 的 KM 曲线,x 轴放大以显示 0-60 个月之间的值。在我使用 xlim 之前,这一切都适用于 ggsurvplot。
ggsurvplot(fitLC, data = KMSCC,
risk.table = TRUE,
conf.int=TRUE,
pval = TRUE,
break.x.by = 12,
xlab ="Time in Months",
ylab="Relative Survival",
ggtheme = theme_minimal(),
risk.table.y.text.col = T,
risk.table.y.text = FALSE)
ggsurvplot(fitLC, data = KMSCC,
risk.table = TRUE,
conf.int=TRUE,
pval = TRUE,
break.x.by = 12,
xlab ="Time in Months",
xlim = c(0, 60),
ylab="Relative Survival",
ggtheme = theme_minimal(),
risk.table.y.text.col = T,
risk.table.y.text = FALSE)
最后,有没有办法在不将较高的 x 轴值更改为 NA 的情况下放大首选的 x 轴值?另见:https://github.com/kassambara/survminer/issues/4
如何将 xlim 模式更改为笛卡尔坐标?
我无法给出图中看到的数据,但为了再现性,这里有一个 example dataset in a Google sheet。
当您使用 ggsurvplot
参数 xlim
或之后使用 + coord_cartesian(...)
放大 surv_graph 的图时,然后 table 自动调整为仅显示图中的数据。这可能值得对包进行更改请求。与此同时,下面的代码可能是一种解决方法。
ggsurvplot()
创建一个包含 4 个列表的对象:其中一个包含图表,另一个包含 table。提取这 2 个并“排列”它们 ggarrange()
可能会创建一个 suitable 图。在 ggarrange 操作之前,我们使用 coord_cartestion(xlim= ...)
:
在 surv-plot 上“放大”
### download file from link provided by OP
### and save it in sink with the code below
lung <- read.csv(file = "../Tdebeus_001.csv", header = TRUE)
library("survival")
library("survminer")
library("ggpubr") # for ggarrange
fitLC <- survfit(Surv(Time_months, Event) ~ Cohort, data = lung)
p1 <- ggsurvplot(fitLC
, data = lung
, risk.table = TRUE
, conf.int=TRUE
, pval = TRUE
, break.x.by = 12
, xlab ="Time in Months"
# , xlim = c(0, 60) ## commented out !
, ylab="Relative Survival"
, ggtheme = theme_minimal()
, risk.table.y.text.col = T
, risk.table.y.text = FALSE
)
### save parts of the original graph
surv_plot <- p1$plot
surv_table <- p1$table
### zoom in on the surv_plot
surv_plot2 <- surv_plot + coord_cartesian(xlim = c(0,60))
### put it back together
ggarrange(surv_plot2, surv_table, ncol = 1, heights = c(3, 1))
这导致下图,可以使用 ggarrange()
的其他参数对其进行微调:(在上面的代码中,heights
将图的 3/4 提供给 surv_plot).
请告诉我这是否是您想要的。
我想创建一个 95%-CI 的 KM 曲线,x 轴放大以显示 0-60 个月之间的值。在我使用 xlim 之前,这一切都适用于 ggsurvplot。
ggsurvplot(fitLC, data = KMSCC,
risk.table = TRUE,
conf.int=TRUE,
pval = TRUE,
break.x.by = 12,
xlab ="Time in Months",
ylab="Relative Survival",
ggtheme = theme_minimal(),
risk.table.y.text.col = T,
risk.table.y.text = FALSE)
ggsurvplot(fitLC, data = KMSCC,
risk.table = TRUE,
conf.int=TRUE,
pval = TRUE,
break.x.by = 12,
xlab ="Time in Months",
xlim = c(0, 60),
ylab="Relative Survival",
ggtheme = theme_minimal(),
risk.table.y.text.col = T,
risk.table.y.text = FALSE)
最后,有没有办法在不将较高的 x 轴值更改为 NA 的情况下放大首选的 x 轴值?另见:https://github.com/kassambara/survminer/issues/4 如何将 xlim 模式更改为笛卡尔坐标?
我无法给出图中看到的数据,但为了再现性,这里有一个 example dataset in a Google sheet。
当您使用 ggsurvplot
参数 xlim
或之后使用 + coord_cartesian(...)
放大 surv_graph 的图时,然后 table 自动调整为仅显示图中的数据。这可能值得对包进行更改请求。与此同时,下面的代码可能是一种解决方法。
ggsurvplot()
创建一个包含 4 个列表的对象:其中一个包含图表,另一个包含 table。提取这 2 个并“排列”它们 ggarrange()
可能会创建一个 suitable 图。在 ggarrange 操作之前,我们使用 coord_cartestion(xlim= ...)
:
### download file from link provided by OP
### and save it in sink with the code below
lung <- read.csv(file = "../Tdebeus_001.csv", header = TRUE)
library("survival")
library("survminer")
library("ggpubr") # for ggarrange
fitLC <- survfit(Surv(Time_months, Event) ~ Cohort, data = lung)
p1 <- ggsurvplot(fitLC
, data = lung
, risk.table = TRUE
, conf.int=TRUE
, pval = TRUE
, break.x.by = 12
, xlab ="Time in Months"
# , xlim = c(0, 60) ## commented out !
, ylab="Relative Survival"
, ggtheme = theme_minimal()
, risk.table.y.text.col = T
, risk.table.y.text = FALSE
)
### save parts of the original graph
surv_plot <- p1$plot
surv_table <- p1$table
### zoom in on the surv_plot
surv_plot2 <- surv_plot + coord_cartesian(xlim = c(0,60))
### put it back together
ggarrange(surv_plot2, surv_table, ncol = 1, heights = c(3, 1))
这导致下图,可以使用 ggarrange()
的其他参数对其进行微调:(在上面的代码中,heights
将图的 3/4 提供给 surv_plot).
请告诉我这是否是您想要的。