使用具有灰度级的自动绘图(survMisc)的生存图

时间:2014-03-22 06:03:02

标签: r plot survival-analysis

我一直在尝试使用包autoplot中的survMisc函数绘制生存函数。到目前为止它的好处,情节很好,但问题是我无法使用scale_color_grey来使用灰色色标。

代码是:

   autoplot(fit.bygroup, plotTable=TRUE, divideTime=1,legendLabs=c("group1", "group2"),  lty=c(1,2),geom_line(size=2))+ scale_color_grey()

我想问题是这个autoplot正在创建一个空白对象......有什么办法可以将它们改成灰度颜色吗?或者,如果我想要黑白背景怎么办?

    p<- autoplot(fit.bygroup, plotTable=TRUE, divideTime=1,legendLabs=c("group1", "group2"),  lty=c(1,2),geom_line(size=2))

这个p实际上是NULL

2 个答案:

答案 0 :(得分:2)

我认为您需要更改autoplot使用的survMisc函数的代码。您可以找到关于如何查看源代码here的非常好的帖子。

在控制台中输入autoplot

autoplot
# ...snip
# UseMethod("autoplot")
# ...snip

UseMethod("autoplot")表示autoplotS3方法。然后我们可以使用methods列出可用的方法。

methods(autoplot)
# [1] autoplot.default* autoplot.survfit  autoplot.zoo

在控制台中输入autoplot.survfit

autoplot.survfit

将代码复制到编辑器。

更改色阶
搜索&#39; scale_col&#39;你会发现三个实例:

scale_colour_brewer(type = "qual", palette = "Dark2",
                    guide = guide_legend(keywidth = 3, keyheight = 3))

将其替换为:

scale_colour_grey(guide = guide_legend(keywidth = 3, keyheight = 3))

更改背景颜色
在最后一个代码部分:
print(g1)替换为print(g1 + theme_classic())(或您喜欢的任何其他theme
grid.arrange(arrangeGrob(g1 + theme(legend.position = "none"),替换为grid.arrange(arrangeGrob(g1 + theme_classic() + theme(legend.position = "none")

使用新名称保存更新的功能,例如autoplot.survfit2

?survMisc::autoplot

中的第一个示例中尝试使用它
data(kidney, package = "KMsurv")
s1 <- survfit(Surv(time = time, event = delta) ~ type, data = kidney)
autoplot.survfit2(s1)

enter image description here

答案 1 :(得分:0)

从版本0.4.2开始,这有点“hackey”。 autoplot.survfit现在在列表中返回tableplot。 这些可以根据需要进一步修改,然后使用autoplot.tableAndPlot进行组合,如下所示:

data(kidney, package = "KMsurv")
s1 <- survfit(Surv(time = time, event = delta) ~ type, data = kidney)
library(survMisc)
tap1 <- autoplot(s1)
for (i in seq_along(tap1)){
    tap1[[i]] <- tap1[[i]] + scale_colour_grey(guide = guide_legend(keywidth = 3, keyheight = 3)) + theme_classic()
    }
autoplot(tap1)

,并提供:

enter image description here

或者单独修改情节,例如:

p1 <- autoplot(s1)$plot
p1 +
    scale_colour_grey(guide = guide_legend(keywidth = 3, keyheight = 3)) +
    theme_classic()