我一直在尝试使用包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
答案 0 :(得分:2)
我认为您需要更改autoplot
使用的survMisc
函数的代码。您可以找到关于如何查看源代码here的非常好的帖子。
在控制台中输入autoplot
。
autoplot
# ...snip
# UseMethod("autoplot")
# ...snip
UseMethod("autoplot")
表示autoplot
是S3
方法。然后我们可以使用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)
答案 1 :(得分:0)
从版本0.4.2
开始,这有点“hackey”。
autoplot.survfit
现在在列表中返回table
和plot
。
这些可以根据需要进一步修改,然后使用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)
,并提供:
或者单独修改情节,例如:
p1 <- autoplot(s1)$plot
p1 +
scale_colour_grey(guide = guide_legend(keywidth = 3, keyheight = 3)) +
theme_classic()