R Легенда графика выживания

У меня есть таблица, которая выглядит так:

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

Сюжет выглядит ожидаемым (т.е. две кривые).

Все, что я хочу сделать, это поставить легенду на график, чтобы я мог видеть, какие данные представлены черной и красной линиями, т.е. выживают ли дикий тип или вариант дольше.

Я пробовал эти две команды:

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

Первая команда работает (т.е. ошибки нет). Вторая команда, я получаю эту ошибку:

Ошибка в strwidth (legend, units = "user", cex = cex, font = text.font): plot.new еще не был вызван

Я пробовал читать форумы и т. Д., Но, похоже, ни один из ответов у меня не работает (например, переключение между верхним / верхним / верхним левым и т.д. не имеет значения).

Изменить 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

Что именно происходит: когда я набираю самую последнюю команду (легенда ("верх", легенда = лаборатория, col = 3: 4, lty = 2: 3, горизонт = FALSE, bty = 'n')), окно XII открывается, за исключением того, что он полностью пустой.

Но затем, если вы просто наберете «plot (fit, lty = 2: 3, col = 3: 4)», появится окно XII и график.

Изменить 2: Кроме того, этот график будет иметь две строки, как мне определить, какая строка является какой переменной? Самый простой способ сделать это - ввести summary (fit), которая дает мне две таблицы. Затем, какая бы переменная ни была первой в таблице, я поставил первой в легенде?

Большое спасибо Ева


person user1288515    schedule 07.08.2014    source источник
comment
Похоже, у меня не было проблем с добавлением легенды к сюжету о выживании. Возможно, вы сможете опубликовать воспроизводимый пример, который мы можем скопировать и вставьте в R, чтобы получить ту же ошибку, что и вы.   -  person MrFlick    schedule 07.08.2014


Ответы (2)


Вы также можете сделать это с помощью ggsurvplot() из 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
)
person mhovd    schedule 12.12.2019

У меня тоже были неоднократные проблемы с ошибкой "plot.new еще не вызван"! Как ни странно, ошибка была прерывистой, и повторение одинаковых команд не всегда приводило к ошибке! В моем случае я обнаружил, что перед командой построения графика

plot.new()

остановил появление ошибки! Понятия не имею почему. Кстати, у меня также не было проблем с добавлением легенды к сюжету выживания, используя вашу команду.

person Neil    schedule 08.08.2014