1

我有一个看起来像这样的表:

ID Survival Event Allele
2   5   1   WildType
2   0   1   WildType
3   3   1   WildType
4   38  0   Variant

我想做一个卡普兰梅尔图,并告诉我野生型或变种是否倾向于存活更长时间。

我有这个代码:

library(survival)
Table <-read.table("Table1",header=T)
fit=survfit(Surv(Table$Survival,Table$Event)~Table$Allele)
plot(fit,lty=2:3,col=3:4)

从拟合的 p 值可以看出,这两组的生存曲线存在显着差异。

survdiff(formula = Surv(dat$Death, dat$Event) ~ dat$Allele, rho = 0)
#                            N Observed Expected (O-E)^2/E (O-E)^2/V 
#    dat$Allele=Variant   5592     3400     3503      3.00      8.63
#    dat$Allele=WildType  3232     2056     1953      5.39      8.63
#    Chisq= 8.6  on 1 degrees of freedom, p= 0.0033

该图看起来符合预期(即两条曲线)。

我要做的就是在图上放一个图例,这样我就可以看到哪些数据由黑线和红线表示,即 Wild Type 或 Variant 存活时间更长。

我试过这两个命令:

lab <-gsub("x=","",names(fit$strata))
legend("top",legend=lab,col=3:4,lty=2:3,horiz=FALSE,bty='n')

第一个命令有效(即我没有错误)。第二个命令,我得到这个错误:

strwidth 中的错误(图例,单位 =“用户”,cex = cex,字体 = text.font):尚未调用 plot.new

我试过阅读论坛等,但似乎没有一个答案对我有用(例如,在 top/topright/topleft 等之间切换并不重要)。

编辑 1:这是我收到此错误的表的示例:

    ID Survival Event Allele
25808   5   1   WTHomo
22196   0   1   Variant
22518   3   1   Variant
25013   38  0   Variant
27354   5   1   Variant
27223   4   1   Variant
22700   5   1   Variant
22390   24  1   Variant
17586   1   1   Variant

究竟发生了什么:当我输入最后一个命令(legend("top",legend=lab,col=3:4,lty=2:3,horiz=FALSE,bty='n'))时,XII 窗口打开,但它是完全空白的。

但是,如果您只是键入“plot(fit,lty=2:3,col=3:4)”,则会出现 XII 窗口和绘图。

编辑 2:此外,该图将有两条线,我如何判断哪条线是哪个变量?最简单的方法是输入summary(fit),它给了我两个表。那么,无论哪个变量在表中排在第一位,我在图例中排在第一位?

非常感谢伊娃

4

2 回答 2

1

我也曾多次出现“plot.new 尚未被调用”错误!奇怪的是,错误是间歇性的,重复相同的命令并不总是导致错误!就我而言,我发现通过在绘图命令之前使用

plot.new()

阻止错误出现!我不知道为什么。顺便说一句,使用您的命令在生存情节中添加图例也没有问题。

于 2014-08-08T13:43:53.643 回答
1

您也可以使用ggsurvplot()from来执行此操作survminer。这是一个例子

library(survminer) # Contains ggsurvplot()
library(survival) # Contains survfit()
ggsurvplot(
  fit=survfit(Surv(time, censor) ~ Allele, data=your_data,type="kaplan-meier"), # Model
  xlab="Years",
  ylab="Overall survival probability",
  legend.labs=c("WildType","Variant"), # Assign names to groups which are shown in the plot
  conf.int = T, # Adds a 95%-confidence interval
  pval = T, # Displays the P-value in the plot
  pval.method = T # Shows the statistical method used for obtaining the P-value
)
于 2019-12-12T09:10:47.223 回答