R 覆盖不同的ggplot2对象

R 覆盖不同的ggplot2对象,r,survival,ggplot2,R,Survival,Ggplot2,我以前曾试图寻求帮助,但实际上并没有解决我的问题。 更多信息可以在这里找到:(你可以在这里找到数据集) 不幸的是,我无法生成一个可靠的示例来发布,因为我的代码主要基于外部程序。我是肯定的,尽管我的问题可以得到回答 我创建了两个ggplot2对象,这些对象需要组合到一个图形中,一个覆盖在另一个图形上 即,一个km的地块,其等级为: 等级(公里标绘$标绘) “gg”“ggplot” 第二: 等级(曲线图) “gg”“ggplot” 两者具有相同的属性 km.地块$plot 曲线图 我的问题是如何

我以前曾试图寻求帮助,但实际上并没有解决我的问题。 更多信息可以在这里找到:(你可以在这里找到数据集)

不幸的是,我无法生成一个可靠的示例来发布,因为我的代码主要基于外部程序。我是肯定的,尽管我的问题可以得到回答

我创建了两个ggplot2对象,这些对象需要组合到一个图形中,一个覆盖在另一个图形上

即,一个km的地块,其等级为:

等级(公里标绘$标绘)
“gg”“ggplot”

第二:

等级(曲线图)
“gg”“ggplot”

两者具有相同的属性

km.地块$plot

曲线图

我的问题是如何将生成的图合并到单个图中?也就是说,将surv.plot和km.plot$plot相互覆盖

按照其他用户的建议执行以下操作会导致错误:

 km.plot$plot + surv.plot$layers[[1]]
 Error in FUN(X[[i]], ...) : object 'label' not found
我假设这个错误与以下几行有关

 > surv.plot$layers
 [[1]]
 mapping: y = ~mean, group = ~label, colour = ~label 
 geom_line: na.rm = FALSE
 stat_identity: na.rm = FALSE
 position_identity 

 ggplot(data, aes(x=t)) +
 geom_line(aes(y= mean, group= label, colour= label), size=1.5) +
但我还添加了inherit.aes=FALSE,但没有解决我的问题

我还检查了:

> head(surv.plot)
$`data`
curve           t      mean        lci       uci label
1    weibull  0.00000000 1.0000000 1.00000000 1.0000000  Cabo
2    weibull  0.05514645 0.9995771 0.99816278 0.9999721  Cabo
3    weibull  0.11029289 0.9990793 0.99646259 0.9999098  Cabo
4    weibull  0.16543934 0.9985407 0.99479769 0.9998211  Cabo
5    weibull  0.22058579 0.9979715 0.99316001 0.9997176  Cabo



 > head(km.plot)
 $`plot`

 $`data.survplot`
 time n.risk n.event n.censor      surv    std.err     upper     lower
 1   0.4271047     79       0        1 1.0000000 0.00000000 1.0000000 1.0000000
 2   1.0841889     78       1        0 0.9871795 0.01290349 1.0000000 0.9625264
 3   1.3470226     77       1        0 0.9743590 0.01836796 1.0000000 0.9399054
 4   3.9753593     76       1        0 0.9615385 0.02264554 1.0000000 0.9197944
 5   4.0082136     75       1        0 0.9487179 0.02632491 0.9989527 0.9010094
我很困惑。我几乎可以肯定这是可以做到的,因为这两个对象在结构上基本相同,所以我看不出有什么理由不能做到。但我花了相当长的时间在这上面,没有希望。我真的希望有人能指点我

感谢您抽出时间阅读本帖

这是因为
surv.plot
层包含名为
label
的变量的映射,该变量不包括在
km.plot
的数据中。在创建
surv.plot
时,您应该能够通过将
surv.plot
数据作为参数添加到
geom
而不是
ggplot()
来绕过此问题。这样,绘制图层所需的数据将随图层“移动”

我们可以用更简单的数据来说明这一点。让我们首先从数据创建一个绘图 只有几列:

库(tidyverse)
df1%
选择(mpg、wt)
#这表示“km”图`

(p这是一个更适合StackOverflow的问题,应该迁移到那里。@MarkWhite这可以由我或版主完成吗?版主必须迁移它。你也可以将这个问题复制粘贴到StackOverflow,然后在这里删除。完全基于代码和计算的内容在这里是离题的;你可能会得到一个更好的answ不管怎么说,在StackOverflow上,ggplot2标签更受欢迎。@MarkWhite尝试过,但每90分钟有一篇文章的上限。哦,谢谢你的全面回复!