Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 以刻面方式堆叠不同的绘图_R_Ggplot2 - Fatal编程技术网

R 以刻面方式堆叠不同的绘图

R 以刻面方式堆叠不同的绘图,r,ggplot2,R,Ggplot2,为了训练ggplot并提高我编写R函数的技能,我决定构建一系列生成生存图的函数,包括各种附加函数。我成功地为基本生存情节建立了一个良好的工作函数,现在我开始做额外的工作。我想做的一件事是,在生存图的顶部,在给定的时间点上堆叠一个危险数字的面积图。我希望它看起来像ggplot的facet\u grid选项,但我没有用这个函数实现它。我不希望两个绘图绑定,就像我们可以使用grid.arrange那样,而是要具有相同的x轴 下面的代码生成两个(简化的)图,我想将它们叠在一起。我试图用facet\u g

为了训练ggplot并提高我编写R函数的技能,我决定构建一系列生成生存图的函数,包括各种附加函数。我成功地为基本生存情节建立了一个良好的工作函数,现在我开始做额外的工作。我想做的一件事是,在生存图的顶部,在给定的时间点上堆叠一个危险数字的面积图。我希望它看起来像ggplot的
facet\u grid
选项,但我没有用这个函数实现它。我不希望两个绘图绑定,就像我们可以使用
grid.arrange
那样,而是要具有相同的x轴

下面的代码生成两个(简化的)图,我想将它们叠在一起。我试图用
facet\u grid
实现这一点,但我认为解决方案不在于此

library(survival)
library(ggplot2)
data(lung)
s <- survfit(Surv(time, status) ~ 1, data = lung)
dat <- data.frame(time = c(0, s$time),
                  surv = c(1, s$surv),
                  nr = c(s$n, s$n.risk))
pl1 <- ggplot(dat, aes(time, surv)) + geom_step()
库(生存)
图书馆(GG2)
数据(肺)

首先,将数据转换为长格式

library(reshape2)
dat.long<-melt(dat,id.vars="time")
head(dat.long)
  time variable     value
1    0     surv 1.0000000
2    5     surv 0.9956140
3   11     surv 0.9824561
4   12     surv 0.9780702
5   13     surv 0.9692982
6   15     surv 0.9649123

仅供其他人参考,“子集”函数对于这样一个简单的过滤器是不必要的
dat.long[dat.long$variable==“surv”,将产生与
子集(dat.long,variable==“surv”)相同的结果。
。这两种方法都不是特别优越,但了解这些选择是很好的。
library(reshape2)
dat.long<-melt(dat,id.vars="time")
head(dat.long)
  time variable     value
1    0     surv 1.0000000
2    5     surv 0.9956140
3   11     surv 0.9824561
4   12     surv 0.9780702
5   13     surv 0.9692982
6   15     surv 0.9649123
ggplot()+geom_step(data=subset(dat.long,variable=="surv"),aes(time,value))+
  geom_area(data=subset(dat.long,variable=="nr"),aes(time,value))+
  facet_grid(variable~.,scales="free_y")