我使用的自动绘图从survMisc软件包,这会产生一个图形生存曲线。然后添加一个geom_line对象,这会产生一个重复的图例。

data(kidney, package="KMsurv")
s1 <- survfit(Surv(time, delta)~1 , data=kidney)
p1<-autoplot(s1, type="fill", survLineSize=2)
d1=data.frame(x=seq(0,20,10),y=seq(0,1,.5),lab=rep('lin'))
p1$plot+geom_line(data=d1,aes_string(x='x',y='y', colour='lab'),inherit.aes=F)阅读食谱,它似乎建议我应该重写使用scale_XXX_discrete的xxx =色/填充/.根据所用的。现在,我如何找出什么是自动绘图使用的?是否有一种简单的方法来识别图例的来源(以及使用的标签-例如它是1,或'1')?
我试着添加
+ scale_colour_discrete(name='Estimate',
breaks=c(1,'lin'),
labels=c('observed','lin')) +
scale_fill_discrete(name='Estimate',
breaks=c(1,'lin'),
labels=c('observed','lin')) +它将1改为“观察”,但我仍然有一个重复的传说。
p1$plot$scales
Reference class object of class "Scales"
Field "scales":
[[1]]
discrete_scale(aesthetics = "colour", scale_name = "brewer",
palette = brewer_pal(type, palette), guide = ..1)
[[2]]
discrete_scale(aesthetics = "fill", scale_name = "brewer", palette = brewer_pal(type,
palette), guide = ..1)
[[3]]
continuous_scale(aesthetics = c("y", "ymin", "ymax", "yend",
"yintercept", "ymin_final", "ymax_final"), scale_name = "position_c",
palette = identity, name = ..1, expand = expand, guide = "none")
[[4]]
continuous_scale(aesthetics = c("x", "xmin", "xmax", "xend",
"xintercept"), scale_name = "position_c", palette = identity,
name = ..1, breaks = ..2, expand = expand, guide = "none")发布于 2015-10-30 04:04:53
如果您查看survMisc:::autoplot.survfit的代码,您将看到设置了两个扩展:scale_colour_brewer和scale_fill_brewer。在您已经发布的代码中,只有colour比例受到附加的geom_line层的影响。要有一个图例,您也需要处理fill规模。
library(ggplot2)
library(survMisc)
library(KMsurv)
data(kidney, package="KMsurv")
s1 <- survfit(Surv(time, delta) ~ 1 , data = kidney)
p1 <- autoplot(s1, type = "fill", survLineSize = 2)
d1 <- data.frame(x = seq(0,20,10), y = seq(0,1,.5), lab = rep('lin'))
p1$plot +
geom_line(data = d1,
aes_string(x = 'x',y = 'y', fill = 'lab', colour = 'lab'),
inherit.aes=F)

https://stackoverflow.com/questions/33410424
复制相似问题