首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别和删除ggplot对象中的传奇

识别和删除ggplot对象中的传奇
EN

Stack Overflow用户
提问于 2015-10-29 09:31:59
回答 1查看 592关注 0票数 1

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

代码语言:javascript
复制
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')?

我试着添加

代码语言:javascript
复制
  + 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改为“观察”,但我仍然有一个重复的传说。

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-30 04:04:53

如果您查看survMisc:::autoplot.survfit的代码,您将看到设置了两个扩展:scale_colour_brewerscale_fill_brewer。在您已经发布的代码中,只有colour比例受到附加的geom_line层的影响。要有一个图例,您也需要处理fill规模。

代码语言:javascript
复制
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) 

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33410424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档